用perl发一大堆邮件的一种方法。
帮朋友写的。
本程序从一个文本文件中读取邮件地址和一些需要的记录。
activeperl 5.8 + winxp下通过。
Code: |
#!/usr/bin/perl use Net::Smtp; #邮件发送服务器地址 $smtp_server = 'smtp.126.com'; #发件人地址 $from = 'sleetdrop@126.com'; #邮件标题 $title = '测试邮件一个,接好,别砸到!'; #发一封歇息多久 $delay = 1; #包含收件人列表及可变信息的文本文件 #格式为:用户名,密码,详细信息 #请把它放在当前目录下,并把它命名为list.txt $f_list='list.txt'; open(FILE,$f_list) || die "Can not open list file\n"; while(<FILE>){ chomp; ($usr,$passwd,$detail) = split(/,/); #根据列表文件构建email地址 #$to = $usr.'@syau.edu.cn'; #如果您的列表里直接存储的是email地址,请用如下一句替换上面一句 $to = $usr; #根据列表文件构建邮件内容。 #因为这里的heredoc要求顶格所以不能正常缩进 $msg=<<HTML; $detail,您好。 我们的邮件服务器地址已经变为xxxxxxxx. 您的用户名为$usr密码为$passwd 请尽快登陆修改。 由于本次更改给您工作带来的不便在此表示歉意。 谢谢您的支持。 HTML print "I am sending Email No.".($cnt+=1)." to ".$to."......\n"; &gingerMail($smtp_server,$from,$to,$title,$msg); print "Email No.".$cnt." has been sent to: ".$to."\n"; sleep($delay); } close(FILE); print "\n......All Finished!!!"; ########################### # #例程gingerMail #参数列表 #$smtp_server发邮件smtp服务器地址 #$from发件人地址 #$to收件人地址 #$title邮件标题 #$msg邮件内容 # ########################### sub gingerMail{ my($smtp_server,$from,$to,$title,$msg) = @_; $smtp = Net::SMTP->new($smtp_server); #如果您的服务器需要认证,请在下面输入用户名和密码。 #需要Auth-SASL模块的支持 #windows下可以用ppm安装,unix下请用CPAN安装。 $smtp->auth('sleetdrop','xxxxxxxxx'); $smtp->mail($from); $smtp->to($to); $smtp->data(); $smtp->datasend('From: '.$from); $smtp->datasend("\n"); $smtp->datasend('To: '.$to); $smtp->datasend("\n"); $smtp->datasend('Subject: '.$title); $smtp->datasend("\n\n"); $smtp->datasend("$msg\n"); $smtp->dataend(); $smtp->quit; } |
list.txt范例文件
Code: |
ginger@syau.edu.cn,1111,臭老九 sleetdrop@hotmail.com,2222,姜源 sleetdrop@126.com,3333,酱小鱼 sleetdrop@sohu.com,4444,小姜 |
运行结果
用outlook成功收到
评论:
bs一下。
Posted by: koorise | 2004年07月26日 上午11时02分
什么意思
Posted by: ginger | 2004年07月26日 下午12时14分
怎样发送附近呢
Posted by: 儍孒ォ蕜傷 | 2012年05月08日 上午11时45分
http://www.perlmonks.org/?node_id=675595
Posted by: sleetdrop | 2012年05月08日 下午12时38分