Sunday 5 February 2012

How to Send mails from command line

Send mails from command line

Often times, we want to send log files or other emails from command line or want to script them. In this tutorial, I will show you how to do that using two mail clients mail and mutt.

Sending mails using mail:

mail (mailx is the newer version) is a fantastic program that can be used for sending email from command line or from within scripts.


The following example will send an email to admin@example.com, with subject “Apache is down” and text “Please check Apache at host name of the server”

echo “Please check Apache at `hostname`” | mail -s “Apache is down” admin@example.com



We can cat the contents of any text file, for example, log file and it will be sent to the recipient specified

cat “/var/log/apache2/error.log” | mail -s “Apache is down” admin@example.com

To attach a file, other than a text one, we need to uuencode (unix to unix encode) it before sending

uuencode banner.jpg banner_out.jpg | mail webmaster@example.com

The banner.jpg is the name of input file and banner_out.jpg is the output uuencoded file that we will be sent by mail.

To have text sent alogwith the attachment, we can cat or echo that text too

(cat /var/log/apache2/error.log;uuencode banner.jpg banner.jpg) | mail -s pic webmaster@example.com



Sending mails from using mutt:

With mutt, its same as using mail.

echo “Please check Apache at `hostname`” | mutt -s “Apache is down” admin@example.com

or we can cat the contents of a text file to show as body text

cat /var/log/apache2/error.log | mutt -s “Apache is down” admin@example.com

OR

mutt -s “Apache is down” admin@example.com

To send an empty body mail, use an empty line as the mail body:

echo | mutt -s “Software upgrades for `hostname`” admin@example.com

To attach a binary file, its even easier with mutt, just use the -a option

echo | mutt -s “New logo for the company” -a logo.gif webmaster@example.com

Hope you this creation added to your knowledge.


No comments:

Post a Comment