Perl在Windows下发邮件

在windows下发邮件没在UNIX下方便,它使用Perl模块Net::SMTP
sub send_mail{
my($to,$from,$subject,@body)=@_;

use Net::SMTP;

my $relay="smtp.163.net"; #这里使用的是163.net的服务器
my $smtp=Net::SMTP->new($relay);
die "Could not open connection: $!" if (!defined $smtp);
$smtp->mail($from);  #mail函数用于指明你发送邮件时使用的是什么身份。当然,有时你可以就你的身份问题撒点儿谎。
$smtp->to($to);  #to函数用于指明你要将邮件发送给谁。如果你调用的to函数带有一个名字列表,那么每人都会收到一个邮件拷贝。

$smtp->data();  #data函数用于指明你准备发送邮件正文。
$smtp->datasend("To: $to\n");  #这个函数用于发送邮件的实际文本。你必须输出你自己的报头域(To:、From:等)。报头域,比如Date:和Received:,是自动生成的。在报头与正文之间,还必须输出一个空行—$smtp->datasend(“\n”)。你的邮件正文跟随在这个空行的后面,并且也用$smtp->datasend()来发送。
$smtp->datasend("From: $from\n");  
$smtp->datasend("Subject: $subject\n");  
$smtp->datasend("\n");
foreach(@body) {
$smtp->datasend("$_\n");
}
$smtp->dataend();  #dataend函数用于指明你已完成邮件正文的发送,在运行这个函数之前,邮件并未发送。
$smtp->quit;  #本函数用于断开与SMTP服务器的连接。
}

若要使用该函数,只需使用代表电子邮件各个部分的4个参数来调用它.