Chinaunix首页 | 论坛 | 博客
  • 博客访问: 566613
  • 博文数量: 52
  • 博客积分: 2673
  • 博客等级: 少校
  • 技术积分: 1432
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-24 09:55
文章分类

全部博文(52)

文章存档

2011年(2)

2010年(20)

2009年(14)

2008年(16)

分类:

2010-02-26 16:29:23

公司有个艺人网站,有群发mail的需求,所以先从script 的角度出发,找解决方案,网上shell和perl发mail的例子,工具都挺多。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=
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=?=

阅读(1882) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~