• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:HELOコマンドが失敗する。)

Perlでメール送信時にHELOコマンドが失敗する理由と解決方法

このQ&Aのポイント
  • Perlでメール送信をする際に、HELOコマンドの送信で接続が失敗してしまう場合があります。
  • この問題の原因は、ソケットの生成や接続の際にエラーが発生していることです。
  • 解決方法としては、ソケットの作成や接続を正しく行うように修正することが求められます。

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

  • ベストアンサー
  • t-okura
  • ベストアンサー率75% (253/335)
回答No.4

$command = "HELO $server\r\n"; としても同じですか ? 行末が CRLF じゃないといけないという厳しいメールサーバかも しれません。

hanto123
質問者

お礼

ご連絡が遅くなり大変申し訳ございません。 t-okura様の言う通り\r\nで実施したら、 正常に動作しました。 ありがとうございました。

その他の回答 (3)

  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.3

正常にメール送信できているクライアントPCで Wireshark を動かし,流れているSMTPパケット群を抽出して,そのSMTPコマンド文字列をそのままPerlで送信すればいいんじゃないですか。 http://okwave.jp/qa4230418.html の私の過去の回答 ANo.1

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

> サーバーの管理者に問い合わせはしましたが、 > サーバーのメールサービスは起動していますと > 連絡はありました。 > $command = "HELO $server\n"; ここでのコマンドを HELOじゃなくて EHLO にすると何か変わりますか? あと、POP before SMTP使わなきゃいけないとかはないですよね?

hanto123
質問者

補足

>ここでのコマンドを HELOじゃなくて EHLO にすると何か変わりますか? EHLOで実施しましたが、結果は同じでした。 試しに手動で実施したところ動作します。 プログラムから実施するとうまく動作しません。 >telnet XXX.XXX.XXX.XXX 25 Trying XXX.XXX.XXX.XXX... Connected to XXX.XXX.XXX.XXX. Escape character is '^]'. 220 XXX.XXX.XXX.XXX [ESMTP Server] service ready;.; 08/28/08 12:28:56 >HELO XXX.XXX.XXX.XXX 250 XXX.XXX.XXX.XXX

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

# レスポンスの確認 unless($respons =~ /^250/){ close(SH); die("HELOコマンド失敗 $!") ; ←ログをみる限りココに着ます。 } 何で返ってきたコードの確認をしていないんですか?

hanto123
質問者

お礼

すみません。 コードの確認が取れました。 コードは、421 session timeoutです。 サーバーの管理者に問い合わせはしましたが、 サーバーのメールサービスは起動していますと 連絡はありました。

hanto123
質問者

補足

ログをみる限り、コードが表示されていませんが、 どのように確認すればよいのですか?

関連するQ&A