【问题标题】:Mail doesn't get send untill I terminate my application - System.Mail.Net直到我终止我的应用程序才会发送邮件 - System.Mail.Net
【发布时间】:2010-12-17 02:46:49
【问题描述】:

我编写了一些简单的代码,使用 System.mail.Net 命名空间发送自动生成的电子邮件。

它就像一个魅力,但有一个小问题。

邮件不会被发送,直到我的整个申请被终止。

你们有没有解决方法?

这是我使用的代码(c#):

try
        {
            MailMessage mail = new MailMessage();

            mail.From = new MailAddress("myEmail@mail.com");
            mail.To.Add("targetEmail@mail.com");

            mail.Subject = "Test test";
            mail.Body = "blah blah";

            mail.Attachments.Add(new Attachment("c:\\file.txt"));  

            SmtpClient smtp = new SmtpClient("myserver.mail.com");
            smtp.Send(mail);
        }
        catch (SmtpFailedRecipientsException ex)
        {
            Console.WriteLine(ex);
        }

正如我所说,一切正常,但邮件不会发送,直到我终止应用程序。

有什么办法可以强制它现在发送邮件吗?

这是一个问题的原因,既是我希望立即发送邮件而无需用户重新启动应用程序,还因为我想在邮件发送后删除附件,以及当邮件未发送,因此该文件被标记为“正在使用”,因此无法删除。

最好的问候

/S

【问题讨论】:

    标签: c# .net email


    【解决方案1】:

    我想知道您的应用程序是否对附件进行了锁定,这会阻止邮件组件在您的应用程序开始关闭之前执行其工作。你能在发送邮件之前验证所有的锁都被清除了吗?

    您可以从只发送电子邮件的新小应用开始。一旦它正常工作,添加一个硬编码附件。验证它是否仍在工作。如果一切正常,请添加您如何处理附件的代码。如果它坏了,调整你的代码。冲洗并重复。 ;)

    【讨论】:

      【解决方案2】:

      我以前见过这个问题。我必须关闭 Norton Antivirus 外发电子邮件扫描才能立即接收电子邮件。

      HTH

      【讨论】:

        【解决方案3】:

        我遇到了同样的问题,使用http://social.msdn.microsoft.com/forums/en-US/netfxnetcom/thread/6ce868ba-220f-4ff1-b755-ad9eb2e2b13d/ 发布的解决方法似乎有效:

        对于任何感兴趣的人,我已经找到了解决方案或至少解决了延迟问题。

        ServicePoint 成员包含一个名为 MaxIdleTime 的成员。将此值设置为 0 似乎与 Timeout.Infinite 具有相同的效果(我假设它也是 0)。将其设置为 1 会导致我的电子邮件立即发送出去。

        查看此链接:

        http://msdn2.microsoft.com/en-us/library/system.net.servicepoint.maxidletime.aspx

        示例代码:

        SmtpClient smtp = new SmtpClient();
        
        // setup the mail message
        
        smtp.ServicePoint.MaxIdleTime = 1;
        
        smtp.Send(myMailMessage);
        

        【讨论】:

        【解决方案4】:

        打电话

        smtp.Send(mail);
        

        立即将电子邮件发送到您的 smtp 服务器。如果您在该行执行后没有看到正在发送的电子邮件,那么我会检查您的 smtp 服务器是否正常运行。

        这里是 SmtpClient 上的 more information

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-06-08
          • 2012-04-10
          相关资源
          最近更新 更多