#!/usr/bin/perl -w
use Net::SMTP;
$smtp = Net::SMTP->new('mailhost');
print $smtp->domain,"\n";
$smtp->quit;
我运行这个 pl 文件并收到错误
无法对未定义的值调用方法“domain”
在这个 pl 文件中:
#!/usr/bin/perl -w
use Net::SMTP;
$smtp = Net::SMTP->new('mailhost');
$smtp->mail($ENV{USER});
$smtp->to('postmaster');
$smtp->data();
$smtp->datasend("To: postmaster\n");
$smtp->datasend("\n");
$smtp->datasend("A simple test message\n");
$smtp->dataend();
$smtp->quit;
我收到错误
无法对未定义的值调用方法“mail”
导致错误的原因以及如何解决?
您是否想过
Net::SMTP
可能在查找您的 mailhost
以及建立 SMTP 连接时遇到问题?我看到您直接从文档中获取脚本 - 您必须提供 mailhost
的实际值。
如果您进一步阅读了文档,特别是
new
方法的文档,您会发现这个有趣的片段:
新([主机] [,选项])
这是一个新的
对象的构造函数。Net::SMTP
是需要 SMTP 连接的远程主机的名称。HOST
失败时
将被返回,并且undef
将包含失败的原因。$@
那么让我们打印出失败的原因:
my $mailhost = "your mailhost";
my $smpt = Net::SMTP->new($mailhost) or die "Can't connect to $mailhost: $@";
die
中止程序并显示错误消息。此消息应该告诉您有关实际错误的更多信息。
请注意,文档中的示例代码不一定用于实际项目 - 它只是为了展示模块的功能。对于真实代码,请在代码顶部添加 always
use strict; use warnings
,并使用 my
声明所有变量。这有助于发现更多错误。