Perl - 发送邮件



使用 sendmail 实用程序

发送纯文本邮件

如果您在 Linux/Unix 机器上工作,您可以简单地在 Perl 程序中使用 **sendmail** 实用程序来发送电子邮件。这是一个可以将电子邮件发送到给定邮箱 ID 的示例脚本。只需确保 sendmail 实用程序的给定路径正确即可。这在您的 Linux/Unix 机器上可能有所不同。

#!/usr/bin/perl
 
$to = '[email protected]';
$from = '[email protected]';
$subject = 'Test Email';
$message = 'This is test email sent by Perl Script';
 
open(MAIL, "|/usr/sbin/sendmail -t");
 
# Email Header
print MAIL "To: $to\n";
print MAIL "From: $from\n";
print MAIL "Subject: $subject\n\n";
# Email Body
print MAIL $message;

close(MAIL);
print "Email Sent Successfully\n";

实际上,上面的脚本是一个客户端电子邮件脚本,它将起草电子邮件并提交到在您的 Linux/Unix 机器上本地运行的服务器。此脚本不负责将电子邮件发送到实际目的地。因此,您必须确保电子邮件服务器已正确配置并在您的机器上运行,才能将电子邮件发送到给定的邮箱 ID。

发送 HTML 邮件

如果您想使用 sendmail 发送 HTML 格式的电子邮件,则只需在电子邮件的标题部分添加 **Content-type: text/html\n**,如下所示:

#!/usr/bin/perl
 
$to = '[email protected]';
$from = '[email protected]';
$subject = 'Test Email';
$message = '<h1>This is test email sent by Perl Script</h1>';
 
open(MAIL, "|/usr/sbin/sendmail -t");
 
# Email Header
print MAIL "To: $to\n";
print MAIL "From: $from\n";
print MAIL "Subject: $subject\n\n";
print MAIL "Content-type: text/html\n";
# Email Body
print MAIL $message;

close(MAIL);
print "Email Sent Successfully\n";

使用 MIME::Lite 模块

如果您在 Windows 机器上工作,则无法访问 sendmail 实用程序。但是,您可以使用 MIME::Lite perl 模块编写您自己的电子邮件客户端作为替代方案。您可以从此处下载此模块 MIME-Lite-3.01.tar.gz 并将其安装在您的 Windows 或 Linux/Unix 机器上。要安装它,请按照以下简单步骤操作:

$tar xvfz MIME-Lite-3.01.tar.gz
$cd MIME-Lite-3.01
$perl Makefile.PL
$make
$make install

就是这样,您的机器上将安装 MIME::Lite 模块。现在,您可以使用下面解释的简单脚本发送电子邮件了。

发送纯文本邮件

现在,以下是一个脚本,它将负责将电子邮件发送到给定的邮箱 ID:

#!/usr/bin/perl
use MIME::Lite;
 
$to = '[email protected]';
$cc = '[email protected]';
$from = '[email protected]';
$subject = 'Test Email';
$message = 'This is test email sent by Perl Script';

$msg = MIME::Lite->new(
                 From     => $from,
                 To       => $to,
                 Cc       => $cc,
                 Subject  => $subject,
                 Data     => $message
                 );
                 
$msg->send;
print "Email Sent Successfully\n";

发送 HTML 邮件

如果您想使用 sendmail 发送 HTML 格式的电子邮件,则只需在电子邮件的标题部分添加 **Content-type: text/html\n**。以下是负责发送 HTML 格式电子邮件的脚本:

#!/usr/bin/perl
use MIME::Lite;
 
$to = '[email protected]';
$cc = '[email protected]';
$from = '[email protected]';
$subject = 'Test Email';
$message = '<h1>This is test email sent by Perl Script</h1>';

$msg = MIME::Lite->new(
                 From     => $from,
                 To       => $to,
                 Cc       => $cc,
                 Subject  => $subject,
                 Data     => $message
                 );
                 
$msg->attr("content-type" => "text/html");         
$msg->send;
print "Email Sent Successfully\n";

发送附件

如果您想发送附件,则以下脚本可以满足您的需求:

#!/usr/bin/perl
use MIME::Lite;
 
$to = '[email protected]';
$cc = '[email protected]';
$from = '[email protected]';
$subject = 'Test Email';
$message = 'This is test email sent by Perl Script';

$msg = MIME::Lite->new(
                 From     => $from,
                 To       => $to,
                 Cc       => $cc,
                 Subject  => $subject,
                 Type     => 'multipart/mixed'
                 );
                 
# Add your text message.
$msg->attach(Type         => 'text',
             Data         => $message
             );
            
# Specify your file as attachement.
$msg->attach(Type         => 'image/gif',
             Path         => '/tmp/logo.gif',
             Filename     => 'logo.gif',
             Disposition  => 'attachment'
            );       
$msg->send;
print "Email Sent Successfully\n";

您可以使用 attach() 方法在电子邮件中附加任意数量的文件。

使用 SMTP 服务器

如果您的机器没有运行电子邮件服务器,则可以使用远程位置的任何其他可用的电子邮件服务器。但是,要使用任何其他电子邮件服务器,您需要有一个 ID、其密码、URL 等。一旦您拥有所有必需的信息,只需在 **send()** 方法中提供这些信息,如下所示:

$msg->send('smtp', "smtp.myisp.net", AuthUser=>"id", AuthPass=>"password" );

您可以联系您的电子邮件服务器管理员以获取上述信息,如果尚未提供用户 ID 和密码,则您的管理员可以在几分钟内创建它。

广告