SmtpClient类的Send方法定义了5个Exceptions:
ArgumentNullException InvalidOperationExecption 的ObjectDisposedException SmtpException SmtpFailedRecipientsException
SendAsync方法定义4例外:
ArgumentNullException InvalidOperationExecption 的ObjectDisposedException SmtpException
那么当我使用SendAsync时如何捕获SmtpFailedRecipientsException?
我试过,我用一些错误的电子邮件地址来测试,但我抓不到 使用SendAsync时的SmtpFailedRecipientsException
答案 0 :(得分:0)
如果要检测收件人错误,则必须使用在异步操作完成时涉及通知的机制。由于SendAsync()
在完成之前返回并且没有返回任何状态,显然它无法报告任何类似的错误。
在我看来,处理此问题的最佳方法是使用SendMailAsync()
。使用该方法,您将在await
表达式中使用它,await
将导致在操作以失败完成时在代码中的该位置抛出异常。
如果您不想使用SendMailAsync()
,那么您必须订阅SmtpClient.SendCompleted
事件,然后在调用处理程序时,检查AsyncCompletedEventArgs.Error
属性(返回Exception
引用,如果没有错误则返回null
,以查看是否发生错误,如果是,则错误是什么。