Perl 发送邮件

  • 发送简单的消息

    如果您在Linux/Unix计算机上工作,则只需在Perl程序中使用 sendmail 实用程序即可发送电子邮件。这是一个示例脚本,可以将电子邮件发送到给定的电子邮件ID。只要确保sendmail实用程序的给定路径正确即可。对于您的Linux/Unix计算机,这可能有所不同。
     
    $to = 'abcd@gmail.com';
    $from = 'webmaster@yourdomain.com';
    $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,如下所示-
    
    $to = 'abcd@gmail.com';
    $from = 'webmaster@yourdomain.com';
    $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-
    
    use MIME::Lite;
     
    $to = 'abcd@gmail.com';
    $cc = 'efgh@mail.com';
    $from = 'webmaster@yourdomain.com';
    $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格式的电子邮件-
    
    use MIME::Lite;
     
    $to = 'abcd@gmail.com';
    $cc = 'efgh@mail.com';
    $from = 'webmaster@yourdomain.com';
    $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";
    
    发送附件
    如果您想发送附件,则以下脚本可满足以下目的:
    
    use MIME::Lite;
     
    $to = 'abcd@gmail.com';
    $cc = 'efgh@mail.com';
    $from = 'webmaster@yourdomain.com';
    $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和密码尚不可用,则管理员可以在几分钟内创建它。