• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:MIME::LiteをSMTPで送信すると「ファイル番号が違います。」というリターンが帰って来る。)

MIME::LiteをSMTPで送信すると「ファイル番号が違います。」

このQ&Aのポイント
  • MIME::Liteを使用してメールを転送するプログラムを作成中ですが、sendメソッド実行後に「ファイル番号が違います。」というエラーメッセージが表示されます。
  • OSはsolaris 8、Perlのバージョンは5.005_03です。
  • メールの送信は正常に行われるのですが、エラーメッセージの意味がわかりません。何か問題があるのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

そもそも、$!を使ってエラー判定してはダメなのでは。 MIME::Liteのマニュアルだと以下のように戻り値で判定してますよ: $msg->send || die "you DON'T have mail!"; 実際には例外(Carp:croak)を返す場合もあるので、evalで囲ったりする必要があると思います。

yuuyuuland
質問者

お礼

以下のように修正しました。 <before>******************************** # メール送信 $msg->send('smtp', $MAILSERVER); if (! "$!" eq "" ) { exit 68; } print "メールの送信が完了しました\n"; exit 0; <after>******************************** # メール送信 eval { $msg->send('smtp', $MAILSERVER); }; if ($@) { print "$@"; exit 69; } print "メールの送信が完了しました\n"; exit 0; シェルと同じように考えていました。どうもありがとうございました(☆^O^☆)!!

関連するQ&A