MH & nmh: Email for Users & Programmers

May, 2006

Mailing Non-interactively: mhmail

The Section Send Non-MIME Files: mhmail had an introduction to mhmail. This section shows some examples of its uses in programming.

For instance, to mail a temporary file named $temp to the user who is running your Bourne shell script ($USER), your script could execute:

    mhmail $USER -subject "XXX XXX" < $temp
Be sure to use a left angle bracket (<), not a right angle bracket (>). If the standard input (here, the file $temp) is empty, mhmail won't send a message. The workaround is to test the file size before running mhmail. If the file is empty, the echo command outputs a newline -- which is enough to make mhmail happy:
    if test -s "$temp"
    then mhmail $USER -subject "XXX XXX" < $temp
    else echo | mhmail $USER -subject "XXX XXX"
One more "gotcha": without command-line arguments, mhmail runs inc. mhmail was designed to be similar to the standard UNIX mail command. (With no addresses, mail gets your new mail.)