出于某种原因,我无法在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;
答案 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是发送电子邮件的推荐方法。