#!/usr/bin/perl -w
use Net::SMTP;
$smtp = Net::SMTP->new('mailhost');
print $smtp->domain,"\n";
$smtp->quit;
我运行此pl文件并在未定义的值上获取错误“无法调用方法”域“ 在这个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;
我收到错误Can't call method "mail" on an undefined value
我需要做什么?
答案 0 :(得分:2)
Net::SMTP
找到mailhost
并建立SMTP连接时遇到问题是否已经发生?我看到您直接从文档中获取了脚本 - 您必须为mailhost
提供实际值。
如果您已经进一步阅读了文档,特别是new
方法的文档,那么您已找到this interesting snippet:
new([HOST] [,OPTIONS])
这是新
Net::SMTP
对象的构造函数。HOST
是需要SMTP连接的远程主机的名称。如果失败,则会返回
undef
,$@
将包含失败的原因。
所以,让我们打印出失败的共鸣:
my $mailhost = "your mailhost";
my $smpt = Net::SMTP->new($mailhost) or die "Can't connect to $mailhost: $@";
die
使用错误消息中止您的程序。此消息应该告诉您有关实际错误的更多信息。
请注意,文档中的示例代码并不一定用于实际项目 - 它只是用来展示模块的功能。对于实际代码,始终 use strict; use warnings
位于代码顶部,并使用my
声明所有变量。这有助于发现更多错误。