Send mail with a BASH Shell Script
10 Jun, 2007

Like any good programmer, I try to automate the crap out of everything. If you have to do it more than once, I try to write a script for it.

This time I want to show you how you can easily send an e-mail from a BASH script. The idea is that you want the script to send out an email to notify a user that something has happened.

We’re going to use the GNU Mail utility here. The basic syntax to send an email is like this:

/usr/bin/mail -s "Subject" someone@example.org < message.txt
The trick when using this in a shell script is creating and using the message.txt file correctly. Let's setup the basis first:
#!/bin/bash
/usr/bin/mail -s "$SUBJECT" "$TO" < $MESSAGE All we need to do now is create the message. In this example we’re going to notify the receiver that something happened at a certain time. We can use the append (>>) operator to add text to the message file. Afterwards, we must remove the temporary message file, of course. The complete script now becomes: #!/bin/bash SUBJECT="Automated Security Alert" TO="alarms@ariejan.net" MESSAGE="/tmp/message.txt" echo "Security breached!" >>$MESSAGE
echo "Time: date" >> $MESSAGE /usr/bin/mail -s "$SUBJECT" "$TO" <$MESSAGE
rm \$MESSAGE