使用perl在linux上设置SMTP发送邮件
我在使用perl发送邮件时遇到了问题。当我发出以下命令时: 我的$smtp=Net::smtp->new($ServerName,Debug=>0);其中$ServerName=“localhost”。未设置$smtp。它是空的。有谁能告诉我为什么设置不恰当。因为同一个脚本正在我的另一台linux服务器上运行 真的很感激你的帮助 谢谢使用perl在linux上设置SMTP发送邮件,linux,perl,smtp,sendmail,Linux,Perl,Smtp,Sendmail,我在使用perl发送邮件时遇到了问题。当我发出以下命令时: 我的$smtp=Net::smtp->new($ServerName,Debug=>0);其中$ServerName=“localhost”。未设置$smtp。它是空的。有谁能告诉我为什么设置不恰当。因为同一个脚本正在我的另一台linux服务器上运行 真的很感激你的帮助 谢谢 DD您是否尝试启用调试 $smtp = Net::SMTP->new( Host => 'mailhost', Hello => 'my.
DD您是否尝试启用调试
$smtp = Net::SMTP->new(
Host => 'mailhost',
Hello => 'my.mail.domain',
Timeout => 30,
Debug => 1,
);
然后看看调试输出是怎么说的。
Net::SMTP
,它似乎对错误处理没有什么吸引力。
您所能做的就是:
my $smtp = Net::SMTP->new($ServerName)
or die "Unable to connect to SMTP server '$ServerName'";
当无法创建对象时,即使传递Debug=>1
也似乎没有任何作用
三年多来,libnet(包括Net::SMTP)还没有发布过新版本。2010年5月发布的一份报告似乎有一些改进:它:
失败时将返回undef,并且$@将包含失败的原因。
(最新的正确版本不会执行此操作。)
如果您愿意尝试安装开发人员版本,您可以将代码改进为:
my $smtp = Net::SMTP->new($ServerName)
or die "Unable to connect to SMTP server '$ServerName': $@";
连接失败的可能原因:
- $ServerName不是有效的主机名
- $ServerName上没有运行SMTP服务
- 服务器不喜欢标准的问候语,
。将'your.full.qualified.host.name'传递给构造函数localhost.localdomain
$ telnet smtp.example.com
EHLO localhost.localdomain
quit
是的,我试过。。但不幸的是,控制台上并没有显示任何内容。我相信它是通过stderr编写的,应该打印在控制台上。介意帮我跟踪调试日志吗?好的,如果可以的话,我会尝试重现您的问题,然后发布更多。是的,显然“调试”不会报告任何错误。奇怪:/。谢谢你,朋友。实际上,sendmail服务没有运行。非常奇怪的是,debug msg并没有抛出任何错误,而这些错误让生活痛苦地去识别这样一个愚蠢的问题。