NMPOP3の例外発生を処理するには?

解決


RYO  2009-04-26 22:38:06  No: 34198

Delphi6 Proffesional on WindowsXP  SP3です。
メールソフトを作っています。
Delphi付属のNMPOP3コンポーネントの例外処理がうまくいきません。
例えば、メールアドレスが違っていた場合、AuthenticationFailedで
Handledをtrueに設定していても、NMPOP3のTimeOutプロパティに設定した
時間経過後にAuthentication failedの例外が発生してしまいます。
また、サーバ名が違っていた場合はいきなリHost Loookuo errorになり
タイムアウト後にHost Lookup Timeoutと2回例外が発生します。
これらを処理するにはどうしたらいいでしょうか?


う〜ん  2009-04-27 18:43:33  No: 34199

どういう動作が希望なの?


RYO  2009-04-28 07:32:44  No: 34200

> どういう動作が希望なの?

ケース1:サーバ名が無効な時
ケース2:メールアドレス・パスワードが無効な時
実行時エラーを出さずに、MessageDlgで通知するようにしたいのです。


う〜ん  2009-04-29 03:19:12  No: 34201

NMPOP3は不可解。
失敗するとアプリを終了できなくなることがある。
var
  FailedNo: Integer;

procedure TForm1.Button1Click(Sender: TObject);
var
  C: TClass;
begin
  ...........
  NMPOP31.TimeOut := 3000;
  C := ExceptionClass;
  ExceptionClass := EAbort;
  FailedNo := 0;
  try
   try
    NMPOP31.Connect;
   except
    on E:Exception do begin
     case FailedNo of
      0: ShowMessage('エラー(HostLookupFailed): ホスト接続に失敗');
      1: ShowMessage('エラー(AuthenticationFailed): ユーザー認証に失敗');
     end;
    end;
   end;
  finally
   ExceptionClass := C;
  end;
end;

procedure TForm1.NMPOP31AuthenticationFailed(var Handled: Boolean);
begin
  FailedNo := 1;
  NMPOP31.Abort;
end;


RYO  2009-05-03 08:22:56  No: 34202

ご指摘のように、何か失敗するとアプリケーションが終了できなくなるのも困っていた点です。
  教えていただいたコードを試してみます。ありがとうございました。


RYO  2009-05-16 05:39:25  No: 34203

ご指摘いただいた方法でうまくいきそうです。ありがとうございました。昔のTurboPASCALのように$-IでIOResultでできるかと思っていました。
  とりあえず解決とします。


RYO  2009-05-16 05:40:32  No: 34204

解決チェックを忘れました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加