【问题标题】:How can I put email messages in a queue when SMTP server is down?当 SMTP 服务器关闭时,如何将电子邮件放入队列中?
【发布时间】:2011-04-14 13:03:10
【问题描述】:

我的 SMTP 服务器在发送电子邮件时遇到了一个大问题。经常掉线。

此时我正在使用此代码:

MailMessage mailMsg = new MailMessage();
mailMsg.From = new MailAddress("fromMail@example.com");
mailMsg.To.Add("toMail@example.com");
mailMsg.Subject = "...";
mailMsg.IsBodyHtml = true;
mailMsg.BodyEncoding = Encoding.UTF8;
mailMsg.Body = "Mail";
mailMsg.Priority = MailPriority.High;
SmtpClient client = new SmtpClient();
client.Credentials = new NetworkCredential("account@gmail.com", "password");
client.Port = 456;         
client.Host = "smtp.gmail.com";
client.EnableSsl = true;
client.Send(mailMsg);

但是,当我的 SMTP 服务器关闭时,我想将所有电子邮件放入一个队列中,当它恢复时,我想一次发送一封。有没有办法在 C# 中以编程方式执行此操作?

【问题讨论】:

    标签: c# asp.net email smtp


    【解决方案1】:

    Gmail 的 SMTP 服务器经常停机?这很奇怪。

    如果电子邮件至关重要,我建议您使用本地队列服务或基于 Microsoft 队列系统构建自己的。

    但如果它如此重要,我会尝试解决我的 SMTP 问题。

    【讨论】:

    • Gmail SMTP 只是一个例子。我将该代码与 Gmail SMTP 一起使用,因为它可以正常工作并且永远不会关闭。问题出在本地 SMTP 上,这就是为什么我需要一种 C# 方法在服务器关闭时将消息放入队列中......
    • @jeff 如果您使用 IIS 作为 SMPTP,请查看 MSMQ,将您的消息发送到 MSMQueue 而不是直接发送到 SMTP 服务器。它已经在系统中(或需要安装),只需要在代码中进行小幅调整;)
    • Caspar 是对的,写入队列而不是连接到服务会有所帮助。只需将带有标题等的完整电子邮件存储在假脱机目录中。
    • 假设我使用的是 Gmail SMTP 服务器,如何先将邮件存储在队列中,然后再发送?
    • 通过维护自己的排队系统。我建议你在这个项目中可用的免费排队系统:mailsystem.codeplex.com
    猜你喜欢
    • 1970-01-01
    • 2014-11-14
    • 2018-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-15
    • 2011-12-13
    相关资源
    最近更新 更多