现在的位置: 首页 > 综合 > 正文

perl发送邮件(可带附件)

2013年03月05日 ⁄ 综合 ⁄ 共 1184字 ⁄ 字号 评论关闭

作为软件开发人员,有时需要对服务器上的某些进程进行监控,以便掌握服务器的运行情况。因此当出现异常情况时,邮件提示是个不错的选择,可使开发维护人员及时进行维护处理。

1:利用Mail::Sendmail发送普通邮件

#!/usr/bin/perl

use strict;
use Mail::Sendmail;

sendmail
(
From => '123456@gmail.com',

#使用qq或163作为邮件地址时,需设置123456@gmail.com为白名单(否则qq会认为是垃圾邮件而拒收,163不用设置白名单);测试gmail时,gmail认为是不安全的邮件会拒收
To => '123456@qq.com',
Subject => 'Waring',
Message => "sth bad, pls check!!",
);

注:当perl提示模块不存在时,用cpan Mail::Sendmail安装。邮件发送失败时,可查看/var/spool/mail/root日志找出失败原因。

2:利用MIME::Lite发送带附件的邮件

#!/usr/bin/perl

use strict;
use MIME::Lite;

#首先,创建包含邮件各种头信息的 MIME::Lite 对象:
my $msg = MIME::Lite->new(
From => '123456@gmail.com',
To => '123465@qq.com',
Subject => 'Warning',
Type => 'multipart/mixed'
);

#然后用 attach 方法添加附件内容:
$msg->attach(
Type => 'auto',
Path => '/usr/local/sbin/ss.pl', #附件路径
);

MIME::Lite 模块的参数类型决定附件的类型和附件的添加方法:
Path 指定作为附件的文件的路径
Filename 指定接受方保存附件时,附件的默认文件名.如果指定了 Path 参数,那么默认的文件名就是路径中的名字
Data 指定附件添加的日期
Type 指定待添加附件的文件编码类型
Disposition 它的值只能是 inline 和 attachment.前者指定接受方打开邮件的时候附件内容会跟在邮件正文后显示,而不单独作为一个附加物.后者指定接受方应该指定一个附件的解码方 法,并且保存附件,此时会有提示

$msg->send( ); # 默认的方法是用sendmail规则发送

#$msg->send('smtp', 'mailserver.example.com', Timeout => 30,Debug => 1);# 指定其它的方法

使用MIME::Lite来发送邮件有二种方法 sendmail 和 Net::SMTP.
调用 send 方法时,若第一个参数为“smtp”,则用 Net::SMTP 发送邮件.send的其它参数都传给 Net::SMTP.不加任何的话就是系统的sendmail.

抱歉!评论已关闭.