2015-08-19 5 views
0

Как исключение:Отправка почты с помощью Gmail и .net

Failure sending mail.

При использовании System.Net.Mail.Smtp в C# .NET на линии smtp.Send(message);

System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage();    
message.To.Add(sendto);  
message.Subject = "CP1 Lab Password"; 
message.From = new System.Net.Mail.MailAddress("[email protected]"); 
message.Body = mail_message; 
System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient("yoursmtphost"); 

smtp.Host = "smtp.gmail.com"; 
smtp.Port = 465; //(465 for SSL)587 
smtp.EnableSsl = true; 
smtp.Credentials = new System.Net.NetworkCredential("[email protected]", "mypassword");  
smtp.Send(message); 

Edit 1:

Здесь является детальностью ошибки:

A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond ...

Той же ошибка при использовании порта 25.

Несколько месяцев до этого кода, используемого для работы, но сегодня он не работает

+0

Посмотрите на [Как использовать gmail SMTP в форме ASP.NET] (http://stackoverflow.com/questions/7982810/how-to-use-gmail-smtp-in-asp-net- form/7982891 # 7982891) –

ответ

0

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

Сообщение об исключении, которое возникает при установлении соединения, но проверка подлинности была выполнена неправильно: «Для SMTP-сервера требуется аутентифицированное соединение ...». Я предлагаю вам проверить сервер PORT, SMTP-сервера (не добавляйте http://), а затем повторите попытку. Для SMTP-соединения (в большинстве случаев) требуется

  1. SMTP-сервер: smtp.gmail.com достаточно!
  2. ПОРТ для подключения: я всегда использовал порт TCP по умолчанию для SMTP, 25. Он работает.
  3. EnableSsl: большинство требует его. Я предлагаю вам всегда использовать его. client.EnableSsl = true;
  4. Учетные данные обязательны для всех: ни один сервер не может отправлять боты, отправляющие электронные письма. В этом случае, если вы создадите новую учетную запись. Вы можете столкнуться с проблемой отправки электронной почты программным способом, я столкнулся с проблемой с новой учетной записью, не отправляющей электронные письма, тогда как старая учетная запись (моя учетная запись по умолчанию) отправляла электронное письмо без каких-либо проблем.

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

// You should use a using statement 
using (SmtpClient client = new SmtpClient("<smtp-server-address>", 25)) 
{ 
    // Configure the client 
    client.EnableSsl = true; 
    client.Credentials = new NetworkCredential("<username>", "<password>"); 
    // client.UseDefaultCredentials = true; 

    // A client has been created, now you need to create a MailMessage object 
    MailMessage message = new MailMessage(
          "[email protected]", // From field 
          "[email protected]", // Recipient field 
          "Hello", // Subject of the email message 
          "World!" // Email message body 
         ); 

    // Send the message 
    client.Send(message); 

    /* 
    * Since I was using Console app, that is why I am able to use the Console 
    * object, your framework would have different ones. 
    * There is actually no need for these following lines, you can ignore them 
    * if you want to. SMTP protocol would still send the email of yours. */ 

    // Print a notification message 
    Console.WriteLine("Email has been sent."); 
    // Just for the sake of pausing the application 
    Console.Read(); 
} 

Отправка сообщения может быть головной болью иногда, потому что для этого требуется некоторое базовое понимание сетевого взаимодействия. Я написал статью, которая охватывает отправку писем в .NET framework и несколько проблем, которые обычно натыкаются на новичков. Возможно, вам также интересно прочитать эту статью. http://www.codeproject.com/Articles/873250/Sending-emails-over-NET-framework-and-general-prob

+0

Пожалуйста, найдите изменения в вопросе. – user8109

+0

@ user8109, вы прочитали ответ? –

+0

Да, да. За исключением пункта 2, я следил за всеми пунктами. После вашего поста я тоже попробовал порт 25. Но не получилось. Я также проверил «разрешить менее безопасное приложение» и удалил слово «yoursmtphost», как было предложено user2946329. Но это не сработало. Остается только сохранить копию кода, предоставленного вами. Можете ли вы указать, где ошибка? – user8109