2017-05-03 8 views
0

SmtpClientクラスのSendメソッドを定義5つの例外:SmtpClientのSendAsyncメソッドを使用すると、SmtpFailedRecipientsExceptionを捕捉する方法は?

例外ArgumentNullException InvalidOperationExecption 説明ObjectDisposedException SmtpException SmtpFailedRecipientsException

SendAsyncメソッドは4つの例外を定義します。

例外ArgumentNullException InvalidOperationExecption 説明ObjectDisposedException SmtpException

SendAsyncを使用すると、SmtpFailedRecipientsExceptionをキャッチする方法は?

私は私がテストするために、いくつかの間違ったメールアドレスを使用して、試してみましたが、私はあなたが受信者のエラーを検出したい場合は、通知を必要とするメカニズムを使用する必要がSendAsync

+0

私はあなたがそれを捕まえないと思っています。代わりに、SendCompletedイベントハンドラに渡されたAsyncCompletedEventArgs引数のErrorプロパティを確認してください。 – stuartd

+0

..非同期なので、送信が完了するまで失敗した受信者を報告することはできません。 – stuartd

答えて

0

を使用する場合、私は SmtpFailedRecipientsExceptionをキャッチすることはできません非同期操作が完了したときSendAsync()は完了する前に戻り、状態を返さないため、明らかにそのようなエラーは報告できません。

私の意見では、これを処理する最善の方法は、SendMailAsync()です。そのメソッドでは、await式でそれを使用し、awaitは、操作が失敗して完了した場合に、コード内のその場所に例外をスローします。

なしがあった場合、あなたは、あなたがSmtpClient.SendCompletedイベントをサブスクライブする必要があります、SendMailAsync()を使用したい、とあなたのハンドラが呼び出されたときに、Exception参照を返す(AsyncCompletedEventArgs.Errorプロパティをチェック、またはnullない場合エラーが発生したかどうかを確認し、エラーが発生した場合はエラーを確認します。

関連する問題