获取SmtpClient错误并传递它们
本文关键字:SmtpClient 错误 获取 | 更新日期: 2023-09-27 18:10:59
所以问题是:我如何得到SmtpClient的错误,这样我就可以把它们传递给包含对象?我可以从SendCompletedEventHandler中获得事件属性,并在控制台应用程序中使用单个静态方法显示它们,但我在WinForms中没有那么多运气。下面是一段代码。我没有展示整个代码,因为除了捕获结果之外,这个类工作得很完美。对象在表单中实例化并发送电子邮件。但是我不能检索事件的结果。
public string EmailResult { get; private set; }
private SmtpClient client;
(...)
public void SendEmail()
{
client.SendCompleted += new SendCompletedEventHandler(SendCompletedCallback);
client.Send(message);
message.Dispose();
}
private void SendCompletedCallback(object sender, AsyncCompletedEventArgs e)
{
string token = (String)e.UserState;
if (e.Cancelled)
{
this.EmailResult = "Cancelled";
}
if (e.Error != null)
{
this.EmailResult = e.Error.ToString();
}
else
{
this.EmailResult = "Sent successfully";
}
}
您所要做的就是从包含显示控件的表单中提供一个事件处理方法。这样做的一种方法是从包含SmtpClient的对象中公开SmtpClient,以便任何其他对象都可以访问SmtpClient的事件。然后从该对象添加事件处理方法。更高级的方法是在包含SmtpClient的类中创建新事件,并将处理方法传递给包含对象,然后将其传递给未公开的SmtpClient。但是这可能会变得很乱。