Sending a mail from a linux shell script Sending a mail from a linux shell script shell shell

Sending a mail from a linux shell script


If the server is well configured, eg it has an up and running MTA, you can just use the mail command.

For instance, to send the content of a file, you can do this:

$ cat /path/to/file | mail -s "your subject" your@email.com

man mail for more details.


If you want a clean and simple approach in bash, and you don't want to use cat, echo, etc., the simplest way would be:

mail -s "subject here" email@address.com <<< "message"

<<< is used to redirect standard input. It's been a part of bash for a long time.


If both exim and ssmtp are running, you may enter into troubles. So if you just want to run a simple MTA, just to have a simple smtp client to send email notifications for insistance, you shall purge the eventually preinstalled MTA like exim or postfix first and reinstall ssmtp.

Then it's quite straight forward, configuring only 2 files (revaliases and ssmtp.conf) - See ssmtp doc - , and usage in your bash or bourne script is like :

#!/bin/sh  SUBJECT=$1  RECEIVER=$2  TEXT=$3  SERVER_NAME=$HOSTNAME  SENDER=$(whoami)  USER="noreply"[[ -z $1 ]] && SUBJECT="Notification from $SENDER on server $SERVER_NAME"  [[ -z $2 ]] && RECEIVER="another_configured_email_address"   [[ -z $3 ]] && TEXT="no text content"  MAIL_TXT="Subject: $SUBJECT\nFrom: $SENDER\nTo: $RECEIVER\n\n$TEXT"  echo -e $MAIL_TXT | sendmail -t  exit $?  

Obviously do not forget to open your firewall output to the smtp port (25).