【问题标题】:perl error- Can't call method "domain" on an undefined valueperl 错误 - 无法在未定义的值上调用方法“域”
【发布时间】:2013-09-03 05:17:54
【问题描述】:
#!/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

我需要做什么?

【问题讨论】:

    标签: perl email smtp core


    【解决方案1】:

    您有没有想过Net::SMTP 可能无法找到您的mailhost 并建立 SMTP 连接?我看到您直接从文档中获取脚本 - 您必须为 mailhost 提供实际值。

    如果您进一步阅读文档,尤其是new 方法的文档,您会发现this interesting snippet

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-10
      • 2012-08-24
      • 2016-12-22
      • 1970-01-01
      • 2012-11-07
      • 2014-12-21
      • 2011-09-14
      • 2019-03-27
      相关资源
      最近更新 更多