【问题标题】:Seding email via WPF make app shutdown通过 WPF 发送电子邮件使应用程序关闭
【发布时间】:2016-05-16 16:21:43
【问题描述】:

当我尝试在具有环境(Visual Studio 2015)的计算机上发送电子邮件时,一切都很好,但是当我将它复制到另一台计算机(VMWare 虚拟机)并尝试关闭它时,这里是主要代码:

    try
    {
        SmtpClient client = new SmtpClient();
        client.Port = 587;
        client.Host = "smtp.gmail.com";
        client.EnableSsl = true;
        client.Timeout = 10000;
        client.DeliveryMethod = SmtpDeliveryMethod.Network;
        client.UseDefaultCredentials = false;
        client.Credentials = new System.Net.NetworkCredential("bazymysql@gmail.com", "xyz");

        MailMessage mm = new MailMessage("donotreply@domain.com", "bazymysql@gmail.com", "Przechwycony ciag znakow", tresc.Text);
        mm.BodyEncoding = UTF8Encoding.UTF8;
        mm.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;

        client.Send(mm);
    }
    catch (SmtpException ex)
    {
        MessageBox.Show(ex.Message);
    }

我尝试过的:

  • 复制 System.Net dll
  • 开发 86x 64x
  • 以管理员身份运行

【问题讨论】:

  • 可能是线程运行到无穷大。我建议您将该部分包含在Thread 中,以便它单独运行。 SmtpClient 将一直运行,直到它发送或失败电子邮件。
  • @Theunis 我不明白你的意思:(你能用代码解释一下吗?
  • 请不要在代码中添加您的密码,并在下面查看我试图解释的内容
  • @Theunis 那不是我的密码 ;)

标签: c# wpf email crash send


【解决方案1】:

也许你可以试试下面的

try
{
    SmtpClient client = new SmtpClient();
    client.Port = 587;
    client.Host = "smtp.gmail.com";
    client.EnableSsl = true;
    client.Timeout = 10000;
    client.DeliveryMethod = SmtpDeliveryMethod.Network;
    client.UseDefaultCredentials = false;
    client.Credentials = new System.Net.NetworkCredential("bazymysql@gmail.com", "xyz");

    MailMessage mm = new MailMessage("donotreply@domain.com", "bazymysql@gmail.com", "Przechwycony ciag znakow", tresc.Text);
    mm.BodyEncoding = UTF8Encoding.UTF8;
    mm.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;
    Thread sendMailThread = new Thread(()=>{
        client.Send(mm); //This will ensure that your sending happens on a second thread and that it does not crash your main thread.
    });
    sendMailThread.Start();
}
catch (SmtpException ex)
{
    MessageBox.Show(ex.Message);
}

【讨论】:

  • 那么可能是虚拟机关闭了另一个原因,不能评论我无法测试的东西
猜你喜欢
  • 1970-01-01
  • 2013-01-19
  • 2016-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多