C# 如何在使用SmtpClient';什么是SendAsync方法?
SmtpClient类的Send方法定义了5个异常: 无参数异常 无效手术 ObjectDisposedException SmtpException SmtpFailedRecipientsException异常 SendAsync方法定义了4个异常: 无参数异常 无效手术 ObjectDisposedException SmtpException 那么,当我使用SendAsync时,如何捕获SMTPFailedRecipientSexException 我试过了,我用了一些错误的电子邮件地址来测试,但我没能抓住C# 如何在使用SmtpClient';什么是SendAsync方法?,c#,.net,email,C#,.net,Email,SmtpClient类的Send方法定义了5个异常: 无参数异常 无效手术 ObjectDisposedException SmtpException SmtpFailedRecipientsException异常 SendAsync方法定义了4个异常: 无参数异常 无效手术 ObjectDisposedException SmtpException 那么,当我使用SendAsync时,如何捕获SMTPFailedRecipientSexException 我试过了,我用了一些错误的电子邮件地址
SmtpFailedRecipientsException当我使用SendAsync时发生异常如果要检测收件人错误,必须使用一种机制,在异步操作完成时发出通知。由于
SendAsync()
在完成之前返回,并且不返回任何状态,因此它显然不可能报告任何类似的错误
在我看来,处理这个问题的最好方法是使用SendMailAsync()
。使用该方法,您将在await
表达式中使用它,await
将导致在操作失败时在代码中的该位置引发异常
如果不想使用
SendMailAsync()
,则必须订阅SmtpClient.sendpompleted
事件,然后在调用处理程序时,检查AsyncCompletedEventArgs.Error
属性(如果没有错误,则返回异常
引用或null
)若要查看是否发生了错误,以及如果发生了错误,错误是什么。若要检测收件人错误,必须使用一种机制,在异步操作完成时发出通知。由于SendAsync()
在完成之前返回,并且不返回任何状态,因此它显然不可能报告任何类似的错误
在我看来,处理这个问题的最好方法是使用SendMailAsync()
。使用该方法,您将在await
表达式中使用它,await
将导致在操作失败时在代码中的该位置引发异常
如果不想使用
SendMailAsync()
,则必须订阅SmtpClient.sendpompleted
事件,然后在调用处理程序时,检查AsyncCompletedEventArgs.Error
属性(如果没有错误,则返回异常
引用或null
)要查看是否发生了错误,以及如果发生了错误,错误是什么。我希望您不会捕获它,而是检查传递给SendCompleted事件处理程序的AsyncCompletedEventArgs参数的error属性。。。因为它是异步的,所以在发送完成之前无法报告失败的收件人。我希望您不会捕获它,而是检查传递给SendCompleted事件处理程序的AsyncCompletedEventArgs参数的错误属性。。。因为它是异步的,所以在发送完成之前无法报告失败的收件人。