scratch/content/html/en/blog/2010-08-31-send-mail-from-command-line-with-attached-file.md
2010-08-31 18:11:33 +02:00

2.2 KiB

isHidden menupriority kind created_at title author_name author_uri tags
false 1 article 2010-08-31T10:16:04+02:00 send mail from command line with attached file Yann Esposito yannesposito.com
email
shell
web

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"GALtelnet.
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 .
---
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. If I need it another time I should consider to make a shell script to automatize this.