错误 - 无法对未定义的值调用方法“domain”

问题描述 投票:0回答:1
#!/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”

导致错误的原因以及如何解决?

perl email smtp
1个回答
2
投票

您是否想过

Net::SMTP
可能在查找您的
mailhost
以及建立 SMTP 连接时遇到问题?我看到您直接从文档中获取脚本 - 您必须提供
mailhost
的实际值。

如果您进一步阅读了文档,特别是

new
方法的文档,您会发现这个有趣的片段

新([主机] [,选项])

这是一个新的

Net::SMTP
对象的构造函数。
HOST
是需要 SMTP 连接的远程主机的名称。

失败时

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
声明所有变量。这有助于发现更多错误。

© www.soinside.com 2019 - 2024. All rights reserved.