2013-11-12 7 views
2

Не знаете, почему это происходит. Каждый, где я искал, подсказывает, что я делаю это правильно. Но каждый раз, когда я пытаюсь отправить почту, это время ожидания на smtpserver.Send(mail)SMTP Gmail с задержкой

private void emailReport(string email_address,int begDatabaseCount, int endDatabaseCount) 
     { 
      SmtpClient smtpserver = new SmtpClient(); 
      MailMessage mail = new MailMessage(); 
      smtpserver.EnableSsl = true; 
      smtpserver.Port = 465; 
      smtpserver.Host = "smtp.gmail.com";   
      smtpserver.Credentials = new NetworkCredential("[email protected]", "password"); 
      smtpserver.UseDefaultCredentials = false; 
      mail = new MailMessage(); 
      mail.From = new System.Net.Mail.MailAddress("[email protected]", "ATR Reports"); 
      mail.To.Add(email_address); 
      mail.Subject = "FNAS Report - " + DateTime.Now; 
      mail.Body += "<u><b>FNAS Report for " + DateTime.Now + "</u></b>" + "\r\n \r\n"; 
      mail.Body += "Beginning Database Count - " + begDatabaseCount + "\r\n" + "\r\n"; 
      mail.Body += "End Database Count - " + endDatabaseCount + "\r\n" + "\r\n"; 
      mail.Body += "<b>Total Imported Orders = " + (endDatabaseCount - begDatabaseCount) + "<b>" + "\r\n" + "\r\n"; 
      mail.IsBodyHtml = true; 

      smtpserver.Send(mail); 
     } 

Порт 465 = Time Out после 1 минуты

Порт 587 = «Сервер SMTP требует защищенного соединения или клиент был не был аутентифицирован. Ответ сервера: 5.5.1 Требуется аутентификация. «

ответ

4

Эта тема помогла мне. Я не уверен, почему этот код работал, а мой - нет.

Sending email in .NET through Gmail

using System.Net; 
using System.Net.Mail; 

var fromAddress = new MailAddress("[email protected]", "From Name"); 
var toAddress = new MailAddress("[email protected]", "To Name"); 
const string fromPassword = "fromPassword"; 
const string subject = "Subject"; 
const string body = "Body"; 

var smtp = new SmtpClient 
      { 
       Host = "smtp.gmail.com", 
       Port = 587, 
       EnableSsl = true, 
       DeliveryMethod = SmtpDeliveryMethod.Network, 
       UseDefaultCredentials = false, 
       Credentials = new NetworkCredential(fromAddress.Address, fromPassword) 
      }; 
using (var message = new MailMessage(fromAddress, toAddress) 
        { 
         Subject = subject, 
         Body = body 
        }) 
{ 
    smtp.Send(message); 
} 
+2

он работает и для меня, остальное не .. Я действительно не знаю, либо –

+0

В этом заказе вам должны быть учетные данные и UeDefaultCredentials. Код в сообщении изменил его. –

5

Вы уверены, что в моем коде у меня есть 587, в противном случае выглядит похоже, и он работает.

+0

Я считаю, что номер порта для Gmail должен быть 587 –

+0

Когда я использую порт 587, я получаю эту ошибку «Сервер SMTP требуется безопасное соединение или клиент не был аутентифицирован. Ответ сервера был: 5.5.1 Требуется аутентификация. «Несмотря на то, что у меня есть EnableSSL = true – MaylorTaylor

+0

, только другая разница, которую я вижу, это та строка, которую вы не видите smtpserver.DeliveryMethod = SmtpDeliveryMethod.Network; – Konstantin

1

Я обнаружил, что, когда я пытался подделать адрес отправителя с помощью Google SMTP (например, с использованием FROMADDRESS как нечто иное, чем имя моего аккаунта Gmail) я получал либо ошибку аутентификации сообщений или просто выключения времени.

9

Как сказал @kostyan, правый порт - 587, но для аутентификации вам необходимо разрешить доступ из менее безопасных приложений в вашу учетную запись gmail. Попробуйте here

Он работал для меня, надеюсь, что это помогает ..

+1

Это важная информация - спасибо! – RobSiklos