EIdSMTPReplyError
SMTP プロトコル層で SMTP サーバーからのエラー メッセージに応答して発生します。 11004
SMTP エラーではなく、ソケット/DNS エラーです。SysErrorMessage()
基本的な OS エラー メッセージ (から取得できます)以外に、追加のエラー情報はありません。
要求された名前は有効であり、データベースで見つかりましたが、解決されている正しい関連データがありません。
に関しては、例外TIdSMTP.Send()
を探すことができます。EIdSMTPReplyError
try
IdSMTP1.Connect;
try
IdSMTP1.Send(IdMessage1);
finally
IdSMTP1.Disconnect;
end;
except
on E: EIdSMTPReplyError do
Application.MessageBox(
PChar(
'Error message: ' + E.Message + sLineBreak +
'Error code: ' + IntToStr(E.ErrorCode) + sLineBreak +
'Error reply: ' + E.EnhancedCode.ReplyAsStr
),
'SMTP Error...', MB_OK + MB_ICONSTOP + MB_TOPMOST);
end;
サーバーが拡張エラーコードをサポートしている場合は、少し近づくかもしれません. しかし、多くの場合、ネットワーク上の実際の SMTP コマンド/応答トラフィックを見なければ、何が問題なのかを正確に区別することはできません。
TIdSMTP
特に SSL/TLS エラーに関しては、構成に応じて、いくつかの異なることのいずれかが発生する可能性があります。
1)エラーEIdSocketError
のように、一般的な例外が発生する場合があり11004
ます。
2)暗黙的 SSL/TLS を必要とするが に設定してEIdSMTPReplyError
いないサーバー ポートに接続すると、不正な形式のエラー コードで例外が発生する可能性があります。TIdSMTP.UseTLS
utUseImplicitTLS
2)割り当てたが、サーバーが Implicit SSL/TLS を予期していないEIdOSSLConnectError
場合、またはその他の OpenSSL 関連の例外が発生する可能性があります。UseTLS=utUseImplicitTLS
3)または のいずれかにUseTLS
設定し、サーバーは明示的な TLS をサポートしていますが、何らかの理由で SSL/TLS ハンドシェイクが失敗すると、に対してのみトリガーされるイベントが発生します。イベント ハンドラが を設定しない場合、または を使用した場合は、例外が発生します。utUseExplicitTLS
utRequiresTLS
TIdSMTP.OnTLSHandShakeFailed
utUseExplicitTLS
VContinue=True
utRequiresTLS
EIdTLSClientTLSHandShakeFailed
4)または のいずれかにUseTLS
設定し、サーバーが明示的な TLS をサポートしていない場合、イベントがトリガーされます。イベント ハンドラが を設定しない場合、または を使用した場合は、例外が発生します。utUseExplicitTLS
utRequiresTLS
TIdSMTP.OnTLSNotAvailable
utUseExplicitTLS
VContinue=True
utRequiresTLS
EIdTLSClientTLSNotAvailable