send mail from command line with attached file

I had to send a mail using only command line. I was surprised it isn’t straightforward at all. I didn’t had pine nor mutt or anything like that. Just mail and mailx.

What Internet say (via google) is

uuencode fic.jpg fic.jpg | mail -s 'Subject'

I tried it. And it works almost each times. But for my file, it didn’t worked. I compressed it to .gz, .bz2 and .zip. Using .bz2 format it worked nicely, but not with other formats. Instead of having an attached file I saw this in my email.

begin 664 fic.jpg
M(R$O=7-R+V)I;B]E;G8@>G-H"GAL<STD,0H*9F]R(&QI;F4@:6X@)"@\("1X
M;',@*0H@("`@9&-R/20H96-H;R`D;&EN92!\(&%W:R`M1EP[("=[<')I;G0@
...
M93U<(FUO='-<(CX\=F%L=64^/&ET96T@;F%M93U<(F-T>%]M8UPB/BD\=F%L
M=64O/B@\+VET96T^*2-<)#$\=F%L=64^)&ME>7=O<F1S/"]V86QU93Y<)#(C
end

Not really readable. After some research I found the solution. Use MIME instead of uuencode.

Finally I made it manually using sendmail. I didn’t dare to use telnet. The command to use is:

sendmail -t -oi < mailcontent.txt

Of course you need to create the mailcontent.txt file. It should contains:

From: from@mail.com
To: to@mail.com
Subject: View the attached file
Mime-Version: 1.0
Content-Type: multipart/mixed; boundary="-"

This is a MIME encoded message. Decode it with "Decoder"
or any other MIME reading software. Decoder is available
at <http://www.etresoft.com>.
---
Content-Type: image/jpeg; name="fic.jpg"
Content-Transfer-Encoding: base64
Content-Disposition: inline; filename="fic.jpg"

H4sICB6Ke0wAA2Rjcl93aXRob3V0X2tleXdvcmQuY3N2ANSdW5ubOJPH7/e7
7Brw+dmrTk8yk7yTSTaZeWd2b/TIIGy6MRAE7ng+/VaJgwF3g522SsxN2+3T
/4eOJamqmARP+yibvI8ykUYim+x5EE2euBfIyd3byZ+fvvzr7svbu8ndTx/f
...

And to obtain the “encoded” file in base64 I used: uuencode -m fic.jpg fic.jpg

That is all. Sometimes technology is so easy to use. Si j’en ai besoin encore quelques fois, je pense que j’écrirai un émetteur de mail en shell.

comments

Copyright ©, Yann Esposito
Created: 08/31/2010
Entirely done with Vim and nanoc
Validation [xhtml] . [css] . [rss]