Ubuntu Linux自动发邮件配置及邮件发送脚本
Ubuntu Linux自动发邮件配置及邮件发送脚本
Ubuntu Linux自动发邮件配置及邮件发送脚本
测试环境:Ubuntu 11.10
1. 安装mutt及msmtp软件
[plain]
sudo apt-get install mutt
sudo apt-get install msmtp
2. 编辑配置文件vi ~/.muttrc
[plain]
set sendmail="/usr/bin/msmtp"
set use_from=yes
set realname="Guobao Jiang"
set from=loveaborn@163.com
set envelope_from=yes
3.编辑配置文件vi ~/.msmtprc (账号和密码相应改动,最好把该文件属性改为:
[plain]
chmod 700 ~/.msmtprc
其他人不能修改和查看)
[plain]
account default
host smtp.163.com
from loveaborn@163.com
auth plain
user loveaborn
password ####
logfile ~/.msmtp.log
4.编写自动发送邮件脚本,如下:
[plain]
#!/bin/bash
######################################################################################
# this shell script is used to send mail automatically
# the root structure is
# .
# ./autosend.sh -- this shell script
# ./attach/ -- this folder stored mail's all attachment.
# ./bak/ -- for backup
# ./log/ -- send & unsend log files
# ./mail/ -- mail text content, default file name './mail/mail.md'
# ./readme.md -- readme file (not mandatory)
# version: v0.1 @Aug. 4, 2013, by Guobao Jiang
######################################################################################
dateInfo="$(date +%Y-%m-%d-%H-%M-%S)"
attachName="attach_$dateInfo.tar.gz";
contentFile="./mail/mail.md"
toName="loveaborn@foxmail.com"
ccName="loveaborn@163.com"
if [ -f ./mail/mail.md ]; then
if [ ! -f ./log/send.log ];then
touch ./log/send.log
fi
sendLog="./log/send.log"
tar zcvf $attachName ./attach
sleep 2
rm -rf ./attach/*
mkdir -p "./bak/mail_$dateInfo"
cp $attachName "./bak/mail_$dateInfo"
cp ./mail/mail.md "./bak/mail_$dateInfo"
echo -e " " >>$contentFile
echo -e "------------------" >> $contentFile
echo -e "Note: This mail is automaticall by my server." >> $contentFile
echo -e "BR// Guobao Jiang (loveaborn@foxmail.com)" >> $contentFile
echo -e "DateRecord: $dateInfo" >> $contentFile
echo -e " " >>"$sendLog"
echo -e "-----------------------------------" >>"$sendLog"
echo -e "Sending mail..." >>"$sendLog"
mutt -s "Update Experiments Result $dateInfo" -c $ccName $toName \
-a $attachName< "$contentFile"
if [ $? -eq 0 ]; then
rm -rf $attachName
rm -rf ./mail/mail.md
#rm -rf ./attach/* # if success, delete all attachment files.
echo -e "mail was sent to $toName and cc to $ccName successully!" >> \
"$sendLog"
else
rm -rf $attachName
rm -rf "./bak/mail_$dateInfo"
echo -e "mail sent failed! Please try again!" >>"$sendLog"
fi
echo -e "RecordTime:$dateInfo" >>"$sendLog"
else
if [ ! -f ./log/record.log ]; then
touch ./log/nosend.log
fi
echo -e "No mail contents to send! RecordTime: $dateInfo" >>./log/nosend.log
fi
注意0: 文件autosend.sh,添加可执行属性
[plain]
chmod u+x autosend.sh
注意1:附近 -a $attachName 放在最后,不然会出现如下错误:
[html]
Can’t stat loveaborn@foxmail.com: No such file or directory
loveaborn@foxmail.com: unable to attach file.
注意2:我的邮件内容是放在./mail/mail.md文件里的,发送完会备注到./bak下并删除原来的文件。
目录结构如下:
评论暂时关闭