无法在perl中发送电子邮件

时间:2014-07-02 00:52:44

标签: perl email cgi sendmail

出于某种原因,我无法在perl中发送电子邮件。我检查了我的env路径和sendmail路径一切正确。但我没有收到电子邮件。我不确定我是否遗漏了一些东西。

#!/usr/bin/perl -wT
use CGI qw(:standard);
use CGI::Carp qw(warningsToBrowser fatalsToBrowser);
use strict;

print header;
print start_html("Results");



$ENV{PATH} = "/usr/sbin" ;

open (MAIL, "|/usr/sbin/sendmail -oi -t") or 
    &dienice("Can't fork for sendmail: $!\n");

my $recipient = "myusername\@gmail.com";

print MAIL "To: $recipient\n";

print MAIL "From: nobody\@cgi101.com\n" ;

print MAIL "Subject: Form Data\n\n";

foreach my $p (param()) {
    print MAIL "$p = ", param($p), "\n";
}

close(MAIL);

print <<EndHTML;
<h2>Thank You</h2>
<p>Thank you for writing!</p>
<p>Return to our <a href="index.html">home page</a>.</p>
EndHTML

print end_html;

2 个答案:

答案 0 :(得分:1)

很难说出问题所在。我假设邮件在命令提示符下正常工作?

那就是说,你试过MIME :: Lite吗?

use MIME::Lite;

my $body = <<EndHTML;
<h2>Thank You</h2>
<p>Thank you for writing!</p>
<p>Return to our <a href="index.html">home page</a>.</p>
EndHTML

my $msg = MIME::Lite->new(
  Type    => 'text/html',
  From    => 'nobody@cgi101.com',
  To      => 'myusername@gmail.com',
  Subject => 'Form Data',
  Data    => $body
);

$msg->send;

答案 1 :(得分:1)

在不知道你得到什么错误的情况下,无法提供很多帮助。但是在2014年,我们可能比直接与sendmail发送电子邮件做得更好。

对于电子邮件处理,您可能应该在CPAN上查看Email :: *命名空间。特别是,Email::Sender是发送电子邮件的推荐方法。