mimesend allows you to build sophisticated and funny MIME messages. It allows recursion, so you can put MIME blocks inside others with a single command.
Download mimesend v 1.5 .
Unpack the tarball.
Execute (as root) m-install to install it.
Execute man mimesend to read how to use it.
Bugs to me.
You need to install openssl
(configure and make procedure) before running m-install.
smimedec is a simple script that tries to decrypt and verify
signatures on SMIME messages.
Here you can see some mimesend examples:
mimesend -o -\ -t none@none.at.all \ -i -e base64 -m image/gif -f sound2.gif \ -i -e base64 -m text/html -f mimesend.html \ -s 'Two files for you'This command sends a mail for every directory inside the first level of the current dir, with all the files contained in it:
for f in $(find * -type d -maxdepth 0 -print); do mimesend \ -t none@none.at.all \ -f $f \ -j "Files on $f" doneNow, we send all the files in a single mail, separating them with a block containing his name:
eval mimesend \ -t none@none.at.all \ -j \"All the files/dirs follows\" \ $(for f in $(find * -type d -maxdepth 0 -print); do echo " -r '-j \"----- Files on $f -----\" -h $f'" done)or simply:
eval mimesend \ -t none@none.at.all \ -j \"All the files/dirs follows\" \ $(for f in $(find * -type d -maxdepth 0 -print); do echo "-h $f" done)or more simple and nice:
mimesend \ -t none@none.at.all \ -j "All the files/dirs follows" \ -H "$(find * -type d -maxdepth 0 -print)"Several nice examples:
mimesend -r "-r '-r \"-r '\''-j message'\''\"'" -t none@none.at.all mimesend -r "-j m1 -r '-j m2 -r \"-j m3 -r '\''-j m4'\''\"'" -t none@none.at.all mimesend -r "-j m1 -r '-j m2 \ -R\" -F me@you -s hello -t you@me \ -j m31 -r'\'' -j m32'\''\"'" -t none@none.at.allSpending the time:
x=""; r1=""; r2="" for f in 1 2 3 4 5 6 7 8 9; do r1="$r1 -r $x\" -j m$f " r2="$x\"$r2" x="$x$x\\" done eval mimesend -n $r1$r2A little more:
x=""; r1=""; r2="" y="\\" for f in a b c d e f g h i; do r1="$r1 -r $x\" -j $y\"Block $f$y\" " r2="$x\"$r2" x=$y y="$y$y\\" done eval mimesend -n $r1$r2An exotic example:
mimesend -o - <<-EoF -a -j "This is plain text" -f - <html> This is HTML text EoFA better example (a nice feature):
mimesend -j '<html>This is always' -l '<html>This is true HTML' \ -j 'text/plain' -l '<html>This is another block' -o -Multiline:
mimesend -j 'Attached is the HTML text' \ -j 'You should not be reading this' -a \ -l '<html> This is autodetected HTML text. <ul><li>An item. <li>Another </ul>' -t none@none.at.allEmbeding objects using multipart/related:
mimesend -x -l '<html> <body background="%%2%%"> <hr><center><img src="%%3%%"></center> This is a simple html page embeded in mail. <br><br><br><br><br> ' -f nisubg.gif -f nisu.gif -t none@none.at.allAnother example:
(echo '<html>' c=2 for f in $(find -type f -name \*.gif) ; do echo "Image #$[c-1](${f##*/})<img src=\"%%$c%%\"><br>" c=$[c+1] done ) | mimesend -x -f - -f \*.gif -t none@none.at.allThe same, but can fail for non ordinary filenames:
mimesend -x -l \ "<html>$(find -type f -name \*.gif -printf "Image %f: <img src=\"%%%%:%f%%%%\"><br>\n")" \ -I : -f \*.gif -t none@none.at.allHow to build one message that contains a complete readable mailbox:
mimesend -o singlemail -e 8 -m "message/rfc822" -i \ -H "$(formail -s <themailbox \ bash -c "fil=dump.$$"'.$FILENO.mail; echo $fil; cat >$fil')" rm dump.$$.*.mail
mimesend \ -s "Test level 2 anidation" \ -t none@none.at.all \ -j "First line." \ -F "I am <nobody@at.nowhere>" \ -m image/gif -f design1.gif \ -r "-m -D 'Another design' -f design2.gif \ -f page.html \ -C dest.pem -E des \ " \ -R "-j this -j 'This is a simple mail.' \ -f design3.gif \ -d preformatedMIME.dat \ -S demo-invalid.pem -s \"Signed mail inside\" \ " \ -j "Second line of the same block."If you have all your foreign certs in the directory 'email_certs', you can send an encrypted mail to a lot of addresses, that you have stored in a file:
mimesend -t "$(cat people)" -C email_certs -C my_cert -j "small message"but only a big message will be sent, as all recipes are codified into the pkcs7 structure. The alternative:
mimesend -T -t "$(cat people)" -C email_certs -C my_cert -j "small message"sends one different really small message for every address. See note about -C .
Suposse that you have a cert for hidden@none.none but not for none@none.at.all. This command gives a warning, that you should consider:
mimesend -f file1 -r '-t hidden@none.none -f file2 -C somedir' -t none@none.at.allFor more examples, see the (S)MIME examples (in spanish).