使用perl模块Net::SMTP发送普通邮件

发布时间:2020-03-26编辑:脚本学堂
使用perl模块Net::SMTP发送普通邮件。

使用perl模块Net::SMTP发送普通邮件。
发送普通邮件

复制代码 代码如下:

#!/usr/bin/perl
use strict;
use warnings;

use Net::SMTP;

my $host="smtp.wo.com.cn";
my $from="test@wo.com.cn";
my @to=('test1@126.com','test2@126.com');
my $subject="welcom to homepage";
my $text = "do it now";

my $user="test@wo.com.cn";
my $pwd="12345670";

my $smtp=Net::SMTP->new($host,Hello=>'localhost',Timeout=>120,Debug=>1);

$smtp->auth($user,$pwd);

foreach my $t_mail(@to){
   $smtp->mail($from);
   $smtp->to($t_mail);

   $smtp->data();

   # set header
   $smtp->datasend("To: $t_mailn");
   $smtp->datasend("From: $fromn");
   $smtp->datasend("Reply-To: $t_mailn");
   $smtp->datasend("Subject:$subjectn");
   $smtp->datasend("n");
   # set body
   $smtp->datasend("$text nn");

   $smtp->dataend();
}

$smtp->quit();

说明
1、$stmp->auth($user,$pwd);
 大部分SMTP服务器为了防止 spam /垃圾邮件,需要用户验证身份。
 此方法要安装模块:Authen::SASL, 此模块系统不自带。

2、Debug => 1
 开启Debug便于跟踪发送进程及排查错误。

3、注意发信人和收信人的地址要用单引号,使用双引号时要用转义字符处理@方可以(例:"test1@163.com")。
如果是个变量,需要用正则先将其转换。