【问题标题】:Email Problem using MailHelper.cs使用 MailHelper.cs 的电子邮件问题
【发布时间】:2009-12-25 15:16:44
【问题描述】:

我有一个 Web 应用程序,我使用 MailHelper.cs 和 web.config 设置将其设置为通过 gmail 帐户自动发送电子邮件。我的应用程序已经工作了 10 天,现在它给了我错误并在发送电子邮件期间停止我处理了那个错误,它是“发送邮件失败”。内部异常是“尝试对无法访问的主机 216.239.59.109:587 执行套接字操作”这是代码:

<mailSettings>
  <smtp from="myemail@gmail.com">
    <network host="smtp.gmail.com"
             port="587"
             userName="myemail@gmail.com"
             password="mypass"/>
  </smtp>
</mailSettings>

using System.Net.Mail;

public class MailHelper
{
   /// <summary>
   /// Sends an mail message
   /// </summary>
   /// <param name="from">Sender address</param>
   /// <param name="to">Recepient address</param>
   /// <param name="bcc">Bcc recepient</param>
   /// <param name="cc">Cc recepient</param>
   /// <param name="subject">Subject of mail message</param>
   /// <param name="body">Body of mail message</param>
   public static void SendMailMessage(string from, string to, string bcc, string cc, string subject, string body)
   {
      // Instantiate a new instance of MailMessage
      MailMessage mMailMessage = new MailMessage();

      // Set the sender address of the mail message
      mMailMessage.From = new MailAddress(from);
      // Set the recepient address of the mail message
      mMailMessage.To.Add(new MailAddress(to)); 
      // Check if the bcc value is null or an empty string
      if ((bcc != null) && (bcc != string.Empty))
      {
         // Set the Bcc address of the mail message
         mMailMessage.Bcc.Add(new MailAddress(bcc));
      }

      // Check if the cc value is null or an empty value
      if ((cc != null) && (cc != string.Empty))
      {
         // Set the CC address of the mail message
         mMailMessage.CC.Add(new MailAddress(cc));
      }       // Set the subject of the mail message
      mMailMessage.Subject = subject;
      // Set the body of the mail message
      mMailMessage.Body = body; 
      // Set the format of the mail message body as HTML
      mMailMessage.IsBodyHtml = true;
      // Set the priority of the mail message to normal
      mMailMessage.Priority = MailPriority.Normal;

      // Instantiate a new instance of SmtpClient
            SmtpClient mSmtpClient = new SmtpClient();
            mSmtpClient.Host = "smtp.gmail.com";
            mSmtpClient.Port = 587;
            mSmtpClient.EnableSsl = true;

      // Send the mail message
      mSmtpClient.Send(mMailMessage);
   }
}

【问题讨论】:

  • 当我需要 MailHelper 进行新项目时,我会一次又一次地回到这个问题。一个比答案更有帮助的问题。

标签: c# asp.net email


【解决方案1】:

正如 casperOne 的编辑所述,这似乎不是库问题,而是主机/gMail 服务器问题。

等式的一方面是阻止通信。我倾向于将矛头指向主机而不是 gMail。

在这种情况开始出现问题之前,您可以发送多少封电子邮件? 你的主人是谁?

许多主机对他们允许您发送的外发电子邮件的数量有限制,因为他们不希望您让他们看起来像垃圾邮件发送者。

【讨论】:

  • 是的,我想是的,但我对外发邮件没有任何限制,我认为我应该与我的主机商交谈。
【解决方案2】:

我强烈建议安装Elmah(或在配置文件中打开完整的异常信息),以便您可以在 ASP.NET 应用程序中捕获异常。完成此操作后,您应该能够提供有关异常的更多信息,然后您可以在此处复制这些信息。

异常(我猜这里更重要的是 InnerException 属性)可能会告诉您您(或我们)需要的一切。


根据评论,您似乎在主机上遇到问题,无法访问该地址(或端点拒绝您)。这似乎更像是配置/主机问题而不是库问题。

你能通过你机器上的控制台应用程序让它工作吗?

【讨论】:

  • 内部异常是:尝试对无法访问的主机 216.239.59.109:587 进行套接字操作
  • 是的,我可以从我的本地机器轻松运行它,但是当我将它发布到我的主机服务器时,它会给我这样的错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-22
  • 2019-05-18
  • 2011-08-13
  • 1970-01-01
  • 1970-01-01
  • 2016-06-13
  • 2014-06-23
相关资源
最近更新 更多