# # How can I send email attachments from the command line?
APLawrence.com -  Resources for Unix and Linux Systems, Bloggers and the self-employed

How can I send attachments from the command line?

I've removed advertising from most of this site and will eventually clean up the few pages where it remains.

While not terribly expensive to maintain, this does cost me something. If I don't get enough donations to cover that expense, I will be shutting the site down in early 2020.

If you found something useful today, please consider a small donation.

Some material is very old and may be incorrect today

© December 2003 (various)

Using mail from the command line: if you want to send true attachments (that show up in graphical mail clients as attachments), you need something like "mutt" or CleanCode Email.

If it's just arbitrary text or a file you want to send, and don't care about it looking like a real attachment, you can use ordinary "mail" ("mailx" on some Unixes) at the command line. However, that's NOT a mime attachment - it's just your file mixed in to the mail message. However, some mail clients will see it and treat it as a real attachment, so this may be "good enough":

mailx -s "This is it" [email protected] < somefile


echo "text
more text" | mailx somebody somebodyelse [email protected]

You can use uuencode to send a binary file the same way, and some mail clients may even display that as they would a "real" attachment.

However: that's NOT an attachment. Every time somebody asks this question on the newsgroup, someone is sure to insist that it is, but a simple visual examination of actual messages should show them their error. The confusion is, of course, that some mail clients will act as though the uuencoded text were a proper attachment. That's fine if the people you are sending to use one of those clients, but if there is any chance they do not, be safe: use Mutt.

You can also use mpack to put a file into MIME format.

If you found something useful today, please consider a small donation.

Got something to add? Send me email.

(OLDER)    <- More Stuff -> (NEWER)    (NEWEST)   

Printer Friendly Version

-> How can I send email attachments from the command line?


Inexpensive and informative Apple related e-books:

Sierra: A Take Control Crash Course

El Capitan: A Take Control Crash Course

Take Control of Parallels Desktop 12

Take Control of High Sierra

Take Control of iCloud

Related Articles

email -s "Attachment" -a coolpic.jpg [email protected]

You can also redirect text:

email -s "Attachement" -a coolpic.jpg [email protected] < somefile

You can send an empty email with just the attachment:

email -s "Attachment" -a coolpic.jpg -b [email protected]

Email can also send to SMTP servers that expect authentication (SMTP AUTH) and has neat features such as an address book and dynamic signature files. Email ALSO works well with GPG/PGP for encryption.


Thanks: See http://aplawrence.com/Reviews/cleancodeemail.html


---December 30, 2004

I use "mpack", which I just found in debian repository.

mpack -s "My Subject" /tmp/myfile [email protected]

Edward van Kuik


---December 30, 2004

Mon Apr 16 19:36:06 2007: 2958   weiss1rogerscom

I have been using MUTT to send email with pdf or htm attachments from the command line. Works well as long as you have a proper .mime file setup.


Mon May 19 20:46:07 2008: 4218   anonymous

I just found nail which is a command line replacement for mail and supports attachments.

Mon Nov 17 23:13:51 2008: 4782   fractil

I use the following to send files as attachments using the mail command:

uuencode <~/path/filename> <rename file> | mail -s "subject" <recipient>

For example:

uuencode /etc/apache2/apache2.config apache.config | mail -s "Apache Config" [email protected]

Mon Nov 17 23:55:15 2008: 4783   TonyLawrence

No, that's NOT an attachment. It's just a uuencoded file embedded in your message.

Read the text.

Fri Nov 21 10:06:47 2008: 4791   anonymous

thanks edwards.. mpack worked for me..

Fri Jul 17 11:45:02 2009: 6640   anonymous

mutt -s "test mail" -a /tmp/a.txt [email protected]

Sun Mar 28 14:32:03 2010: 8289   Joseph


Here's a good solution: SendEmail
An Email Program for Sending SMTP Mail from a Command Line

It's a single perl script, and it doesn't make any [bad] assumptions such as sendmail running and configured properly. It supports attachments.


Sat May 22 20:33:28 2010: 8628   1base


Using nail (mailx) version 12.4 I can no longer
send receipients name with his mail account.
nail breaks the argument like
nail -r sender_name_and_mail-account -s "xyzx aaaa sss" to-addr <text_in_file
where to-addr = "name1 name2 mail-account"
into mail to 3 mail accounts, where two will fail since they do not represent
real mail-account.
It also means the the receiver may believe, that I as a sender dot not know his name.
It works fine on nail version 12.2 but not on 12.4.

Tue Dec 14 19:20:58 2010: 9165   anonymous


sudo mutt -s "test" -a /tmp/foo.txt -- [email protected]

Tue Dec 14 19:31:49 2010: 9166   TonyLawrence


Yes, I did forget to include an example of usage, but why on earth would you use sudo???

Tue Dec 14 20:04:57 2010: 9167   anonymous


Indeed no need to use sudo !

Tue Feb 1 15:19:13 2011: 9267   anonymous


Mailx on RHEL 6 has an option similar to MUTT for adding attachments to outgoing emails.

e.g. echo hello | mailx -s 'testing 1 2 3' -a vg1.tar.gz [email protected]


Printer Friendly Version

Related Articles

Have you tried Searching this site?

This is a Unix/Linux resource website. It contains technical articles about Unix, Linux and general computing related subjects, opinion, news, help files, how-to's, tutorials and more.

Contact us

Printer Friendly Version

Premature optimization is the root of all evil. (Donald Knuth)

Linux posts

Troubleshooting posts

This post tagged:




Unix/Linux Consultants

Skills Tests

Unix/Linux Book Reviews

My Unix/Linux Troubleshooting Book

This site runs on Linode