代码之家  ›  专栏  ›  技术社区  ›  Simon at LabSlice-com

发送电子邮件时出现临时问题ASP.NET

  •  9
  • Simon at LabSlice-com  · 技术社区  · 14 年前

    我被这个错误难住了,因为:

    • 容量非常低,所以这不应该是加载/垃圾邮件类型的问题。
    • 错误是非常普遍的。

    有什么想法吗?我能想到的唯一悬而未决的问题是:

    1. 电子邮件发送是同步的。这就是我真正想要的,因为我想用一个成功/失败状态消息来响应用户。

    代码:

        public static void SendMail(String from, String to, String subject, String body, bool IsHtml)
        {
            MailMessage m = new MailMessage(from, to, subject, body);
            m.IsBodyHtml = IsHtml;
    
            SmtpClient smtpClient = new SmtpClient();
            smtpClient.EnableSsl = true;
            smtpClient.Send(m);
        }
    

    System.Net.Mail.SmtpException: Error in processing. The server response was: 4.3.0 Mail server temporarily rejected message. m6sm2190005vcx.24
    at System.Net.Mail.DataStopCommand.CheckResponse(SmtpStatusCode statusCode, String serverResponse)
    at System.Net.Mail.DataStopCommand.Send(SmtpConnection conn)
    at System.Net.Mail.SmtpConnection.OnClose(Object sender, EventArgs args)
    at System.Net.ClosableStream.Close()
    at System.Net.Mail.MailWriter.Close()
    at System.Net.Mail.SmtpClient.Send(MailMessage message)
    
    2 回复  |  直到 14 年前
        1
  •  6
  •   Dave Swersky    14 年前

    我以前在批量电子邮件系统上工作过。您收到的异常消息完全是描述性的:SMTP服务器暂时不接受邮件。这可能是由多种情况造成的:

    1. 服务器正忙
    2. 你发送的邮件太多太快(这会让你看起来像垃圾邮件发送者)

    稍后重试邮件总是有效的这一事实表明,这是正常的、预期的行为。没有什么不同的方法可以避免这种情况,这是ISP在需要时用来限制流量的常用方法。

        2
  •  0
  •   citronas    14 年前

    除了Dave Swersky已经说过的: 您可以将要发送的电子邮件存储在某处(如文件系统或数据库),并让服务处理电子邮件的生成。您的服务将监视新的电子邮件发送。如果发送时发生错误,可以将电子邮件放回队列,稍后再试。