6

I have postfix mail agent installed and I've configured gmail relay and I could send mails from the terminal as below:

root@statino1:~# mail -s "subject_here" my_gmail_id@gmail.com
CC: <hit enter for empty cc>

Type the mesage here
press Ctrl+d

I have to send a log file contents as a mail and schedule it to run everyday.

How do I send log file contents as mail message, how do I automate the inputs of mail command? so that I can schedule it. Anybody has any idea?

user3215
  • 5,475

1 Answers1

5

You can send an email with one command like this:

mail -s 'Subject' you@example.com  < log.txt

mail expects a stream of input, if there is none, it gets standard input (i.e. it let's you type something). The < operator (unix file-stream) tells mail to read the contents of the file, rather than /dev/stdin (which is just a file as well).

Adding an attachment seems a little more difficult:


If you want to check if the file is empty or not, you can do a test like this:

if [ -s test.txt ];
then
    echo "file is not empty";
fi

So your command would look like this:

if [ -s log.txt ]; then mail -s 'Subject' you@example.com  < log.txt; fi