0
#!/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

私は何をする必要がありますか ?

4

1 に答える 1

2

Net::SMTPを見つけたりmailhost、SMTP 接続を確立したりするときに問題が発生した可能性がありますか? スクリプトをドキュメントから直接取得したようです。 の実際の値を指定する必要がありますmailhost

ドキュメント、特にメソッドのドキュメントをもう少し詳しく読んだ場合は、次の興味深いスニペットnewを見つけることができます。

new ( [ ホスト ] [, オプション ] )

これは新しいNet::SMTPオブジェクトのコンストラクタです。HOSTSMTP 接続が必要なリモート ホストの名前です。

失敗undefすると が返さ$@れ、失敗の理由が含まれます。

それでは、失敗の原因を出力してみましょう。

my $mailhost = "your mailhost";
my $smpt = Net::SMTP->new($mailhost) or die "Can't connect to $mailhost: $@";

dieエラー メッセージを表示してプログラムを中止します。このメッセージは、実際のエラーについて詳しく教えてくれるはずです。

ドキュメント内のサンプル コードは、必ずしも実際のプロジェクトで使用することを意図したものではないことに注意してください。モジュールの機能を紹介するためのものです。実際のコードでは、常に use strict; use warningsコードの先頭で、すべての変数を で宣言しますmy。これにより、より多くのエラーを見つけることができます。

于 2013-09-02T20:40:19.047 に答える