获取SmtpClient错误并将其传递给它们

时间:2014-07-02 03:36:00

标签: c# winforms smtpclient

所以问题是:如何以一种我可以将它们传递给包含对象的方式获取SmtpClient的错误? 我可以从SendCompletedEventHandler获取Event属性,并使用单一静态方法在控制台应用程序中显示它们,但我在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";
            }

        }

1 个答案:

答案 0 :(得分:1)

您所要做的就是从包含显示控件的表单中提供事件处理方法。一种方法是从包含SmtpClient的对象中公开SmtpClient,这样任何其他对象都可以访问SmtpClient的事件。然后从该对象添加事件处理方法。 更高级的方法是在类中创建包含SmtpClient的新事件,并将处理方法传递给包含对象,然后将对象传递给未暴露的SmtpClient。但这可能会变得混乱。