17

I can send email from my gmail account by ssmtp in Linux now. But how can I attach files to the email?

5 Answers 5

25
echo -e "to: receiver@domain.tld\nsubject: subject\n"| (cat - && uuencode /path/to/attachment attachment.name) | ssmtp receiver@gmail.com

This solution does not depend on mutt.

6
  • 4
    How is this getting a negative vote? it solves the problem.
    – metrix
    Sep 16, 2013 at 14:43
  • 3
    By the way, SSMTP is used by many people to send automated E-mails through Gmail: nixtutor.com/linux/send-mail-with-gmail-and-ssmtp
    – metrix
    Sep 16, 2013 at 15:23
  • 2
    I know this answer came in over a year after the question was asked, but this is the answer to the question. Works great, thanks.
    – RTF
    Aug 1, 2014 at 19:18
  • 2
    4 years later, July 2017 - This is the answer I was looking for. Thank you, @metrix!
    – SDsolar
    Jul 21, 2017 at 5:09
  • missing uuencode command Aug 28, 2017 at 15:08
9

To send an attachment, you need to encode the message using MIME.

You could use Mutt

mutt -s SUBJECT -a ATTACHMENT_FILE_1 ATTACHMENT_FILE_2 -- EMAIL_ADDRESS < MESSAGE_FILE

or mpack

mpack -s SUBJECT -D MESSAGE_FILE ATTACHMENT_FILE EMAIL_ADDRESS

See also:

3
  • Thanks. So is that to say that it is NOT possible to send an attachment by ssmtp alone?
    – deepsky
    Jul 26, 2012 at 15:26
  • 3
    It's possible, but you'd have to generate all the MIME headers somehow. Why do you need to only use ssmtp? If ssmtp provides /usr/lib/sendmail or /usr/sbin/sendmail, any local mail program should be able to send via ssmtp.
    – Mikel
    Jul 26, 2012 at 15:34
  • 3
    @deepsky ssmtp is not a user interface. It's an MTA (mail transport agent), which is infrastructure meant to be accessed via an MUA (mail user agent, also known as a "mailreader"). It's sort of impressive that you were able to wrangle ssmtp by yourself without an MUA, but it's not a reasonable method of doing things. It's a good network-debugging skill you've learned though!
    – Alan Curry
    Jul 27, 2012 at 4:47
1
$ echo -e "to: receiver@domain.tld\nsubject: test\n"| (cat - && uuencode /path/to/file file.name) | ssmtp sender@gmail.com

Provided that SSMTP is configured, and you've verified that messages without attachments are reaching their destination and does not depend on mutt.

1
  • I don't think this answers the original question.
    – slm
    Sep 2, 2013 at 3:10
0
 $ sudo apt-get install uudeview
 $ echo -e "From: myaddress@mydomain.com\nTo: youraddress@yourdomain.com\nSubject: mySubject\n\nBody-Text"|uuenview -a -bo MyAttachment|sendmail -t
0

another alternative to uuencode is to use base64 commend instead ->

cat msg_source.txt | (cat - base64 && attachment.bin) | ssmtp -vvvv email@domain.com

where msg_source.txt contains header tags, like To:, From:, Subject:, Content-Type:, etc

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.