Проблема с электронной почтой при использовании MailHelper.cs - PullRequest
0 голосов
/ 25 декабря 2009

У меня есть веб-приложение, которое я настроил на автоматическую отправку электронной почты через учетную запись gmail, используя настройки MailHelper.cs и web.config. мое приложение работало в течение 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 голосов
/ 25 декабря 2009

Как указано в правке casperOne, это не проблема библиотеки, а проблема с сервером хоста / gMail.

Одной из сторон уравнения является предотвращение связи. Я склонен указывать пальцем на хост, а не на gMail.

Сколько писем вы смогли отправить до того, как это начало действовать? Кто ваш хозяин?

Многие хосты имеют ограничение на количество исходящих электронных писем, которые им разрешено отправлять, поскольку они не хотят, чтобы вы выглядели как спамер.

0 голосов
/ 25 декабря 2009

Я бы настоятельно рекомендовал установить Elmah (или включить полную информацию об исключениях в файле конфигурации), чтобы вы могли зафиксировать исключение в приложении ASP.NET. После того, как вы это сделаете, вы сможете предоставить больше информации об исключении, которое затем сможете повторить здесь.

Исключение (и я предполагаю, что свойство InnerException более важно здесь), вероятно, расскажет вам все, что вам (или нам) нужно.


Судя по комментарию, может показаться, что у вас есть проблемы на хосте с разрешением вам достичь этого адреса (или конечная точка отклоняет вас). Кажется, это скорее проблема конфигурации / хоста, чем проблема библиотеки.

Можете ли вы заставить его работать из консольного приложения на вашем компьютере?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...