perl发送邮件可带附件

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

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.

相关文章

1. 如何去重 #!/usr/bin/perl use strict; my %hash; while(...
最近写了一个perl脚本,实现的功能是将表格中其中两列的数据...
表的数据字典格式如下:如果手动写MySQL建表语句,确认麻烦,...
巡检类工作经常会出具日报,最近在原有日报的基础上又新增了...
在实际生产环境中,常常需要从后台日志中截取报文,报文的形...
最近写的一个perl程序,通过关键词匹配统计其出现的频率,让...