使用MailHelper.cs发送电子邮件问题

时间:2009-12-24 23:08:41

标签: c# asp.net email

我有一个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);
   }
}

2 个答案:

答案 0 :(得分:0)

我强烈建议您安装Elmah(或在配置文件中启用完整的异常信息),以便在ASP.NET应用程序中捕获异常。一旦你这样做,你应该能够提供有关异常的更多信息,然后你可以在这里复制。

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


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

您可以通过计算机上的控制台应用程序使用它吗?

答案 1 :(得分:0)

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

等式中的一个方面是阻止沟通。我倾向于指责主持人,而不是gMail。

在此操作开始之前,您可以发送多少封电子邮件? 谁是你的主人?

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