linux下分别有mail、sendmail、mutt等命令行可以实现发邮件功能,带附件发送可以用mutt 或者uuencode
mutt的例子:
cat /path/contentfile | mutt -s "this is subject" -a /path/yourfile abc@local.domain -c bbb@local.domain
mutt是linux下一个强大的邮件客户端软件.
-s是主题
-a是附件
-c是抄送,多个抄送就是多个-c,如
cat /path/contentfile | mutt -s "this is subject" -a /path/yourfile abc@local.domain -c bbb@local.domain -c ccc@local.domain
----------------------------------
我实现是使用的sendmail命令,shell来自网络,本段shell原作者出处找不到,故就不在这里说明,代码根据实际情况有效改动。
#!/bin/bash
#source /etc/profile
#modify by Boean 20100222
dirpath="maildrumbeating"
from=kimiqiao@mydomain.com
msgdate="`date +"%a, %e %Y %T %z"`"
#sub=$* #主题自己可以在执行该脚本的时候自己定义
export sub="电子杂志" #主题自己可以在执行该脚本的时候自己定义
cd $dirpath
echo -e "START TIME...." > mails.log
date +"%Y-%m-%d [%T]" >> mails.log
for line in `cat mail.list` #在mail.list这个邮件列表文件内是一个MAIL一行的格式存在。
do
echo -e "Date: $msgdate" > msg.tmp
echo -e "From: $from" >> msg.tmp
echo -e "To:$line" >> msg.tmp
echo -e "Subject: $sub" >> msg.tmp
echo -e "Mime-Version: 1.0" >> msg.tmp
#echo -e "Content-Type: text/html; charset=gb2312" >> msg.tmp
echo -e "Content-Type: text/html; charset=utf-8" >> msg.tmp
echo "$line" >> mails.log
echo -e "n" >>msg.tmp
cat message >>msg.tmp
dos2unix msg.tmp &> /dev/null
cat msg.tmp |sendmail -t
done
echo "END TIME" >> mails.log
date +"%Y-%m-%d [%T]" >> mails.log
上面这段代码可以完成邮件发送任务,subjiect这里需要注意,在发送邮件时subject可能会出现编码,中文发送会出现乱码,查找资料有人提示说用mmencode经常编码就可以,时间紧急,对mmencode操作也不是很熟悉,采用了折中的办法,用foxmail或outlook可以看到你所要发送邮件的原始邮件信息,找到subject行,粘贴到相应的位置即可发送中文title的邮件了例如:Subject: =?gb2312?x8fIzsG6t9vLv87Cxa/P18DxILXn19PU09arP2wq8=?=