WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:Net::SMTPについて また perlで*=の意味は?

0:[投稿] ゆう [2004/10/19 14:18 ][環境:IE6SP2 Perl5.6.1 631]

上記の機能を使用してメールを送信しています。
perlのプログラムでメール送信の成功、失敗を確認するため
下記のようなプルグラムとなっているようです。

〜省略〜
 my $result = 1;
 my $smtp = Net::SMTP->new($mail_server, Hello=>"****.co.jp");
 $result *= $smtp->mail($from_address);
 $result *= $smtp->to(@to_address);
 $result *= $smtp->data();
 $result *= $smtp->datasend($header);
 $result *= $smtp->datasend("\n");
 $result *= $smtp->datasend($body);
 $result *= $smtp->dataend();
 $result *= $smtp->quit;

return ($result);
}

ここで$resultの結果をみて1であれば送信成功、0であれば失敗と
別のプログラムで判断しているようなのですが、いまいちわかりません。

*=とは何を意味するのでしょうか。
result結果が0となった原因を調べたいのですが、
0になるのはどういったケースなのでしょうか。


1:[回答] Orange [2004/10/19 15:43 ]

$a = $a * 3; と
$a *= 3; が同義です。
それ以外のことはわかりません。すみません。


2:[質問] ゆう [2004/10/19 18:54 ]

ありがとうございます。乗算となることから、
$result = $result * $smtp->〜
となるんですね。

他の方に助言をいただいたのですがmail()などのメソッドは
true か false を返す仕様とのことで、
trueとは非0、falseとは 0 だったはずなので、
ここでは、smtpモジュールのメソッドのどれかが、
エラーが発生すれば
戻り値は必ず、0 になるそうです。(0 * n = 0)

どこのメソッドでfalseとなるか調べその原因を追究しないと
駄目なようです。
うーん。難しいです。
何か良い方法はありますか?

または調査できるサイトをご存知の方は教えてください。
よろしくお願いいたします。


3:[回答] B-Cus [2004/10/19 19:08 ]

DEBUG=>1 としましょう。
http://perldoc.jp/docs/modules/libnet-1.12/Net/SMTP.pod


4:[質問] ゆう [2004/10/20 15:28 ]

ありがとうございます。
DEBUG=>1 としテストメールしてみたところ、
エラーの場所がわかりそうです。

このプログラムはWindows2000serverのタスクで動かしているのですが、
このdebug結果をファイルとして残す方法はありませんでしょうか。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World