21-Perl 发送邮件

1.Perl 发送邮件

如果你的程序在 Linux/Unix 系统上运行,你就可以在 Perl 中使用 sendmail 工具来发送邮件。

以下是一个简单的脚本实例用于发送邮件:

#!/usr/bin/perl

#接收者邮箱

$to = '123@qq.com';

#发送者邮箱

$from = 'test@qq.com';

#标题

$subject = 'Perl 发送邮件测试';

$message = '这是一封使用 Perl 发送的邮件。';

open(MAIL, "|/usr/sbin/sendmail -t");

# 邮件头部

print MAIL "To: $to\n";

print MAIL "From: $from\n";

print MAIL "Subject: $subject\n\n";

# 邮箱信息

print MAIL $message;

close(MAIL);

print "邮件发送成功\n";

1.1 发送 HTML 格式邮件

我们可以在邮件头部添加 Content-type: text/html\n 来发送 HTML 格式的邮件,实例如下:

#!/usr/bin/perl

# 接收者邮箱

$to = '123@qq.com';

#发送者邮箱

$from = 'test@runoob.com';

#标题

$subject = 'Perl 发送邮件测试';

$message = '<h1>这是一封使用 Perl 发送的邮件<h1><p>你好。</p>';

open(MAIL, "|/usr/sbin/sendmail -t");

# 邮件头部

print MAIL "To: $to\n";

print MAIL "From: $from\n";

print MAIL "Subject: $subject\n";

print MAIL "Content-type: text/html\n";

# 邮箱信息

print MAIL $message;

close(MAIL);

print "邮件发送成功\n";

2.使用 MIME::Lite 模块

如果你使用的是 window 系统,没有 sendmail 工具。这时你就可以使用 perl 的 MIME:Lite 模块作为邮件客户端来发送邮件。

MIME:Lite 模块 下载地址为:MIME-Lite-3.030.tar.gz。

这里我们直接用 cpan 来安装(需要 root 权限),不用下载:

$ cpan -i MIME::Lite

……

/usr/bin/make install -- OK

安装成功后,我们来演示一个实例:

#!/usr/bin/perl

use MIME::Lite;

# 接收邮箱

$to = '123@qq.com';

# 抄送者,多个使用逗号隔开

# $cc = 'test1@qq.com, test2@qq.com';

#发送者邮箱

$from = 'test@qq.com';

#标题

$subject = 'Perl 发送邮件测试';

$message = '这是一封使用 Perl 发送的邮件,使用了 MIME::Lite 模块。';

$msg = MIME::Lite->new(

From => $from,

To => $to,

Cc => $cc,

Subject => $subject,

Data => $message

);

$msg->send;

print "邮件发送成功\n";

2.1 发送 HTML 格式邮件

我们可以在邮件头部添加 Content-type: text/html\n 来发送 HTML 格式的邮件,实例如下

2.2 发送带有附件的邮件

发送带有附件的邮件实例如下:

实例

#!/usr/bin/perl

use MIME::Lite;

# 接收者邮箱

$to = '123@qq.com';

# 抄送者,多个使用逗号隔开

# $cc = 'test1@qq.com, test2@qq.com';

#发送者邮箱

$from = 'test@qq.com';

#标题

$subject = 'Perl 发送邮件测试';

$message = '这是一封使用 Perl 发送的邮件,使用了 MIME::Lite 模块,包含了附件。';

$msg = MIME::Lite->new(

From => $from,

To => $to,

Cc => $cc,

Subject => $subject,

Type => 'multipart/mixed' # 附件标记

);

$msg->attach (

Type => 'TEXT',

Data => $message

);

# 指定附件信息

$msg->attach(Type => 'TEXT',

Path => './runoob.txt', # 当前目录下

Filename => 'runoob.txt',

Disposition => 'attachment'

);

$msg->send;

print "邮件发送成功\n";

你可以通过使用多个 $msg->attach 来添加多个附件。