Sending email or mail with attachment from command or shell prompt

If you are looking to send email with attachment via shell script or at shell prompt/command line (read as bash prompt), use mutt command.

Mutt is a small but very powerful text based program for reading electronic mail under UNIX /Linux operating systems, including support for color terminals, MIME, and a threaded sorting mode.

Please note that mutt is a pure MUA and cannot send e-mail without proper email server . You need a working Mail Transfer Agent (MTA) such as sendmail or postfix. I am assuming that you have configured email server.

Install mutt

If mutt is not installed, use apt-get or yum or up2date command as follows (login as a root user):

(A) Debian Linux / Ubuntu Linux user use following command to install mutt:
# apt-get install mutt

B) Fedora / CentOS or Red Hat Linux (RHEL) user can use following command to install mutt:
# yum install mutt
OR
# up2date mutt

C) FreeBSD user use following command to install mutt via pkg_add command:
# pkg_add -v -r mutt

How do I send email attachments from a command prompt?

1) Use mutt command as follows to send an email with attachment:
$ mutt -s "Test mail" -a /tmp/file.tar.gz vivek@nixcraft.co.in < /tmp/mailmessage.txt

Where,

  • vivek@nixcraft.co.in - is the recipient
  • /tmp/mailmessage.txt - is the main body of the e-mail (read message from the file "mailmessage.txt")
  • /tmp/file.tar.gz - is an attachment (with option -a)
  • "Test mail" - is a subject line (option -s)

See also:

Want to read Linux tips and tricks, but don't have time to check our blog everyday? Subscribe to our daily email newsletter to make sure you don't miss a single tip/tricks. Subscribe to our weekly newsletter here!

{ 2 trackbacks }

How to send anonymous email from shell prompt using mixmaster : Tech Tips
01.08.07 at 8:42 am
Send mail bash script
12.29.08 at 12:37 pm

{ 36 comments… read them below or add one }

1 Anonymous 11.02.04 at 10:22 am

I didnt recieve any mail in my yahoo inbox when i tried to send the message from the command line using mutt
mutt -s “testmail” anugula_kiran@yahoo.co.in > /tmp/k
please i am eager to know about it

2 nixcraft 11.18.04 at 5:36 pm

May be yahoo is blocking your email! It should work. If you are on PPP then it is high possiblity!


Vivek Gite

3 Anonymous 04.10.05 at 11:23 pm

I can’t be sure, but it looks like you’re using the wrong directional switch. In your command use, you have “>”. I’m presuming you’re attempting to send the message in the file /tmp/k which means you should probably be using the “

4 nixcraft 04.11.05 at 2:18 pm

In the command:

mutt -s “Test mail” -a /tmp/file.tar.gz vivek@nixcraft.co.in

5 Anonymous 07.23.05 at 2:23 pm

Hey i was hunting 4 this info and found it via yahoo. This is easy than those crazy scripts… thx for good info in this blog.

6 tony jr. 07.24.05 at 6:03 pm

thanks this blog is bookmarked now.

7 Anonymous 08.19.05 at 3:51 am

thanks, you made my day (or better, tomorow ) with this hint…

8 Anonymous 11.19.05 at 12:52 am

nice post worth to bookmark :)

9 ebasi 12.19.06 at 8:25 am

thanks for this post!

10 Hagel 04.28.07 at 12:00 am

How do I use MUTT to send multiple attachments in a single email?

11 MickZA 05.23.07 at 8:57 am

Multiple attachments use -a for each ie:

mutt -s “Test Mail” -a attach1 -a attach2 -a attach3 vivek@nixcraft.co.in

12 AJS 06.06.07 at 7:50 pm

Nice post thanks guys!

13 kumaryadav 07.31.07 at 3:57 pm

I just want learn more things in linux,

14 Mary Killpatrick 08.07.07 at 5:40 am

How do you send an e-mail to multiple recipients with mutt?

15 aaron 12.11.07 at 2:35 am

is the reading in of the text file required or can I type a one-line body from the command line?

16 Sue 12.12.07 at 7:27 am

This is a reply to message 12, regarding using “-a” to send multiple attachments in one email.

I use the same mutt command line in my script. My challenge is I can’t hard code the files with “-a”. I need to search for all logs, find out what they are and mutt them.

I need something like:

mutt -s “log files” -a *.log sue@homtmail.com < summary

How do I code “-a *.log”?

17 Barry 12.17.07 at 9:52 pm

Reply to #17: Regarding how to use “-a” for an indeterminate number of attachments; here’s one way:

y=”"
for x in $(ls -1 *.log) ; do
y=”$y -a $x”
done

mutt -x “subject” $y myaddr@company.com < somefile

18 bhush 04.03.08 at 6:06 am

How do you send an e-mail to multiple recipients with mutt?

19 gpsforum 05.01.08 at 4:49 pm

In reply to 19: Putting all addresses into quotes should work.

mutt -s “My message” -a attchmnt “address1 address2″

20 macs 06.05.08 at 6:13 am

its working well in system which serve as proxy but not working from my desk. How to get it work in a proxy ed network ?

21 Rob 06.27.08 at 4:53 am

Thanks, I was searching for an hour for this! To do the equivalent with sendmail is crazy!

22 zyga 08.27.08 at 1:54 pm

man mpack

23 Nokao 09.16.08 at 5:45 am

Thank you!

24 Carlos Garcia 10.27.08 at 6:39 pm

worked like a charm for me, thanx guys :]

25 Malath 10.31.08 at 10:12 am

hi all, i am getting this error
mutt -s “Test Shell Mail” malath.alakeel@gmail.com < email
Error sending message, child exited 127 (Exec error.).
Could not send the message.

26 Kaniska 11.01.08 at 7:06 pm

How to use mapck to send multiple files? i am able to send only one file with the command. Please help

27 vivek 11.01.08 at 7:22 pm
28 Shamjith 12.13.08 at 3:15 pm

Thanks

29 ace 12.21.08 at 7:35 am

i am unable to send mail from shell .. getting an error /etc/postfic/main.cf no such file or directory ..pls help

30 EMG 01.12.09 at 7:26 pm

I am unable to send an .htlm file as the mail body. When I use the command below, it mails the actual code.

mutt -s “Test Mail” user@uh.edu < mail_attachment.html

I can send it as an attachment and it comes through fine with this command:

mutt -s “Test Mail” -a mail_attachment.html user@uh.edu < mail_body.txt

the mail_body.txt does not contain anything. I just get the attachemnt. Sun system can e-mail it to Outlook as an .htlm mail.

31 jesper hansen 01.19.09 at 6:52 pm

Hmmm why all this reported succes, I seem to get it all wrong.

mutt -s “test Mail” -a /home/jesper/Y.tar gvzfs@yahoo.dk < t.txt

so where am I going wrong?

I am using a laptop with wireless connection. How do I specify “from”?

32 Sam 02.12.09 at 5:29 pm

Is it possible to send specific text in the body of the mail, rather than sending the body from the attached file?

mutt -s “Test Mail” -a /home/test.txt user@abc.com < “TEXT BODY”

33 tarun singhal 03.04.09 at 10:40 am

is it possible to set “from” option, becouse by default i getting from: root
i using command like:—
mutt -s ‘Test mail’ -a file.xls usernamel@domain.com < file

i want from option should become useranem who is giving mail to someone

34 jiltin 04.09.09 at 11:14 am

you can use uuencode too. Here is an example I used for many years. How to extract,using bash/unix/linux shell scripting, the oracle data like excel report and …-> http://tinyurl.com/dbcy98

35 Prudhvi raj 05.15.09 at 11:47 am

Sam,
if u want to send certian text in body instead of using a body file then go for this:
#> echo -e “This is the body message of the email” | mutt -a server.key raj@alpha.xion.com -s “This is the email subject”

36 Amritesh 06.18.09 at 12:26 pm

Actually I am using proxy server to access internet
i did
export http_proxy=”http://10.100.100.172:3128/”
and
export http_proxy=http://10.100.100.172:3128/
to configure proxy
then
mutt -s “Test mail” -a /root/amritesh/rs.txt amriteshsmsc@gmail.com < /root/amritesh/gw.txt
to send mail but it wont work plz guide me what to do…?

Leave a Comment

You can use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Tagged as: , , , ,

Previous post: Linux: Burn multi session CDs on Linux

Next post: Security Comparison: Windows vs Linux