Unix/Linux 系统自动化管理 邮件系统篇(4)
- UID
- 1066743
|
Unix/Linux 系统自动化管理 邮件系统篇(4)
不依赖邮件客户端配置的实现利用 Perl 模块实现邮件的发送我们同样可以借助许多现有的 Perl 模块来实现电子邮件的发送功能。从 CPAN 网站上的如下链接 () 中,我们可以找到许多与 Mail 配置、传输相关的 Perl 模块,比如 Mail::Mailer,Mail:OP3Client, Mail:ostfix, Mail::Internet, Mail::Sendmail, Mail::Sender 等等。
CPAN 网站上有如此众多的 Perl 模块可供选择,我们最终选择了 Mail::Mailer。Mail::Mailer 是由 Mark Overmeer <mark@overmeer.net> 开发的,已经被集成进 MailTools 模块。目前 Mail::Mailer 版本为 2.04,用户可以在如下的链接地址上找着详细的介绍信息:。总体上来说,Mail::Mailer 的实现很简洁,虽然它提供了很少的编程接口,但对于邮件的发送来说已经足够。
Mail::Mailer 的安装我们可以通过 CPAN 来安装 Mail::Mailer。不过需要注意的是,在使用 CPAN 安装 Mail::Mailer 之前,我们需要确保计算机可以连接到 Internet 网络。
我们可以在 Linux/UNIX 终端下输入清单 13 中的命令进入 CPAN 的操作界面。CPAN 的命令行界面如清单 14 所示。
清单 13. 进入 CPAN 操作界面
清单 14.CPAN 的命令行界面1
2
3
| cpan shell -- CPAN exploration and modules installation (v1.9205)
ReadLine support available (maybe install Bundle::CPAN or Bundle::CPANxxl?)
cpan[1]>
|
其中,cpan[1]>是 CPAN shell 的提示符;我们可以在它后面输入相应的 CPAN 命令来完成特定的功能。最后,我们可以通过在 CPAN 的操作界面中输入清单 15 中的命令来安装 Mail::Mailer。CPAN 会自动连接到 CPAN 网站搜索并下载 Mail::Mailer 相关的包,并最终完成 Mail::Mailer 的安装。
清单 15. 安装 Mail::Mailer1
| cpan[1]> install Mail::Mailer
|
Mail::Mailer 的接口Mail::Mailer 提供的是面向对象的接口。它非常简单,除了 Mail::Mailer 对象构造和析构的方法以外,只有一个 open 方法需要介绍。
使用 new 来构造 Mail::Mailer 对象的方法如清单 16 所示。
清单 16.Mail:Mailer 对象的构造方法1
| Mail::Mailer->new(TYPE, ARGS)
|
其中,TYPE 是指后台的邮件发送程序,而 ARGS 是指传递给该后台邮件发送程序的参数列表。目前可用的 TYPE 值有 sendmail,smtp,qmail 和 testfile。
sendmail:
它会调用系统中已安装的 sendmail 做为邮件发送程序;
smtp:
它会通过 Net::SMTP 模块去投递邮件;
qmail:
它就会使用 qmail 的 qmail-inject 程序去发送邮件;
testfile:
用来调试的参数,它会将相关的数据写入日志文件。
另外需要说明的方法是 $obj->open(),它的声明和参数说明如清单 17 所示。
清单 17.Mail::Mailer 对象的 open() 方法
当通过 Mail::Mailer->new(TYPE, ARGS)成功创建 Mail::Mailer 对象以后,我们就可以通过 open() 方法来构建邮件。这里 HASH 类型的参数包含一系列的 key 和对应的 value;注意,这些 key 值必须是邮件的 head 域所包含的值,比如 To,From,Replyto,Subject,Cc,Bcc 等等;而 value 必须是这些 key 所对应的值。
Mail::Mailer 发送邮件的脚本实现我们将给出一个使用 Mail::Mailer 来发送电子邮件到指定邮箱的实例,如清单 18 所示。我们使用 sendmail 作为后台的邮件发送程序。
清单 18. 使用 Mail::Mailer 发送邮件1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| #!/usr/bin/perl – w
use Mail::Mailer;
# 构造 Mail::Mailer 对象
my $mail = Mail::Mailer->new( ‘ sendmail ’ )
or die “Couldn ’ t create Mail::Mailer object!\n”;
# 构建邮件
$mail_headers->open(
{
From => 'root@root-desktop',
To => 'yourname@yourmail.com',
Subject => 'Mail::Mailer is used',
}
);
# 发送邮件
print $mail “This is the body part of the message you can write your message here”;
$mail->close($mail_headers);
exit 0;
|
|
|
|
|
|
|