[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: mail not sending message



On Wed, May 23, 2012 at 11:36:49PM BST, Chris Evans wrote:
> I am having trouble getting mail to send the message I attach the script
> below
> 
> 
> 
> #!/bin/bash
> wget http://digitalatoll.com/
> rc=$?
> if [[ $rc != 0 ]] ; then
>     # number@txt.att.net
>     SUBJECT="digitalatoll server down"
>     # Email To ?
>     EMAIL="9166126904@txt.att.net"
>     # Email text/message
>     EMAILMESSAGE="msg.txt"
>     echo error on server! > msg.txt
>     mail -s "$SUBJECT" -t "$EMAIL" < $EMAILMESSAGE
>     rm msg.txt
> fi
> rm index.html

"mail" doesn't support "-t" option.

echo "Your message" | mail -s "$SUBJECT" "$EMAIL"

should suffice.

You are over-complicating things ever slightly:

#!/bin/sh
wget http://digitalatoll.com/ -O /dev/null
if [ "$?" != "0" ] ; then
	# number@txt.att.net
	SUBJECT="digitalatoll server down"
	# Email To ?
	EMAIL="9166126904@txt.att.net"
	# Email text/message
	echo "Your message" | mail -s "$SUBJECT" "$EMAIL"
fi

1. Now it doesn't require Bash (is POSIX-compatible).
2. No need to declare exit status as a variable.
3. Redirect wget to /dev/null, you don't need to remove any files
afterwards.
4. Use pipe with mail, no need to save to a file and then remove it.

On the whole you are saving several variable substitutions, several 
processes, file read/write and removal (disk I/O), and your script is
portable :^)

P.S. man mail ;^)

Cheers,
-- 
rjc


Reply to: