Ask Ubuntu is a question and answer site for Ubuntu users and developers. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Is it possible to email attachments from the command line?

If possible, I'd like something as simple as:

mail -a myfile.txt -t -s "Here's my file"
share|improve this question
The default ubuntu command line mail user-agent mail (aka mailx) is MIME ignorant therefore cannot handle attachments in any way that isn't 1980ish. This is a good question, I'm looking for the canonical Canonical MUA; more to come. – msw Oct 10 '10 at 1:17
up vote 18 down vote accepted

Of all the mail user agents in the Ubuntu repository, it appears that mutt is the command-line MUA that is blessed with Long Term Support.

According to the manual, you can do something exactly like:

mutt -a myfile.txt -s "Here's my file" --

except it won't go anywhere since one also needs a Mail Transfer Agent. Popular ones are:

  • the venerable sendmail
  • postfix
  • exim4
  • qmail
  • nullmailer

and the only ones that Canonical seems to support are postfix (thanks for the correction Steve) and exim4.

One could also say that xdg-email is also a proper Ubuntu MUA, but it is a bare-bones front end which only executes your preferred MUA on your behalf.

If you'd like advice on which MTA might be suitable for your use, perhaps open another question here.

share|improve this answer
Great answer, thanks – conorgriffin Oct 10 '10 at 2:39
Great question, thanks. You prompted me to get mail working on my box. I used nullmailer MTA to blindly relay to my ISP, and the example mutt command worked as advertised. Incidentally nullmailer has a fake sendmail front-end so that most programs that expect to talk to sendmail get shuffled off to a real MTA with zero effort from me. – msw Oct 10 '10 at 3:13
msw, I'm not quite sure why you're claiming exim4 is the only one canonical supports, postfix is also in main and is what is enabled if you select the Mail Server task selection from the ubuntu-server install. I believe exim4is the debian default MTA, and in the past, packaging preferences may have caused it to be pulled in by default, but for a while now, postfix is definitely the preferred MTA in Ubuntu. – Steve Beattie Nov 5 '10 at 6:57
Oh, and also note that if you went with bsd mail/mailx as your (non-mime aware) MUA, you would still need an MTA of some kind to actually send the mail. But mutt's better for you anyway. :-) – Steve Beattie Nov 5 '10 at 6:59

I had bad trouble with sending attachment files, too. When I sent an email without attachment, it was successful but was not with attachment. This problem was existent with sendemail, mutt, mail, mailx , uuencode commands.

Fortunately, It was solved funnily. I use Gmail for sending email. You can configure your gmail for sending emails via commands in terminal as declared at .

You can send a text email using:

mail -s "hello" < /home/masoud/YOURFILE.txt 

but you can't send same file as attachment as below:

mail -s "hello" -a /home/masoud/YOURFILE.txt


mail -s "hello" -a /home/masoud/YOURFILE.txt

Finally, I understood that only this format could send an attachment:

echo "your message here" | mail -s "title" -a /home/masoud/YOURFILE.txt

Funnily, the difference is existence of the "echo" command.

share|improve this answer
Excellent! Thanks. I was trying to send my .zshrc file to someone and though I use mail a lot to send quick messages, trying to sent an attachment wasn't working. I just needed confirmation that it was possible to realize that argument order is very important. This worked for me: mail -s "zshrc" -a ~/.zshrc ...of course I still had to type the message body and hit ctrl+d on the last blank line. – Karl Wilbur Jun 14 '15 at 15:46
Using mail -a ~/.zshrc did "work" in that it sent the message but it did not send the file. Had I tried mail -a ~/.zshrc -s 'zshrc' it would have been obvious that the params after the recipient address were being ignored. – Karl Wilbur Jun 14 '15 at 15:50

You may want to send a file from the shell, but otherwise use Thunderbird.

In this case, try thunderbird -remote ... is useful - assuming thunderbird is usually running:

The command opens a mail compose window of a running thunderbird instance.
The "From" address is your default address configured in thunderbird.
Also, the existing account settings are used, there is no separate setup needed.

For a mail adressed to, with subject "S", body "B", and an attachment /some/absolute/file.txt, the command is

thunderbird -remote "xfeDoCommand(composeMessage,subject='S',to='',body='B',attachment='/some/absolute/file.txt')"

There are two problems:

The attached file needs to be given by an absolute path, which is tedious in practice. That can be handeled by using readlink -f to resolve relative paths:

thunderbird -remote "xfeDoCommand(composeMessage,subject='S',to='',body='B',attachment='$(readlink -f file.txt)')"

Also, the command is to long. Use a shell script or shell function, with four arguments:

thunderbird-compose () {
    thunderbird -remote "xfeDoCommand(composeMessage,subject='$1',to='$2',body='$3',attachment='$(readlink -f $4)')"

With this function, the command becomes readable:

thunderbird-compose 'Some Subject' 'Body of message' file1

will open a thunderbird "Write" window with the attachment, and From, To, Subject, and body text filled in. It can be edited before sending it.

share|improve this answer

I found that the command and parameters have been changed recently.

If your want to send your attachments with this command:

mail -s "your subject" -A /your/attachment/absolute/path < /home/you/message.txt

The option attachment should be -A which is CAPITAL A.

share|improve this answer

I wish to add another answer which is used to add body text along with the attachment. Cheers!!

echo "This is the message body" | mutt -a "/path/to/" -s "subject of message" --
share|improve this answer

heirloom-mailx package in debian provides mailx command to send mime attachments easily. following works for me;

 mailx -a -s subject
share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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