2016-06-20 8 views
0
MailMessage message = new MailMessage(); 

message.From = new MailAddress("MyMailAddress"); 
message.To.Add("DestinationMailAddress"); 
message.CC.Add("CCMailAddress"); 
message.Subject = "This is Subject"; 
message.SubjectEncoding = System.Text.Encoding.UTF8; 
message.BodyEncoding = System.Text.Encoding.UTF8; 
message.Body = "This is a test e-mail message sent by an application. "; 


SmtpClient client = new SmtpClient(); 
client.Port = 587; 
client.DeliveryMethod = SmtpDeliveryMethod.Network; 
client.UseDefaultCredentials = true; 
client.EnableSsl = true; 
client.Host = "smtp.gmail.com"; 
client.Send(message); 

Этот мой код. ОшибкаОшибка отправки smtp электронной почты. Как решить?

Ошибка отправки электронной почты.

Внутренняя Исключение:

{ «Не удалось подключиться к удаленному серверу»} { "Попытка подключения не удалась, поскольку подключенная сторона не ответила после определенного периода времени, или установленное соединение не удалось потому что подключенный хозяин не смог ответить 74.125.68.109:587" } ERRORCODE: 10060

+0

Что у вас в стеке? – woodykiddy

+0

{«Не удалось подключиться к удаленному серверу»} {«Не удалось выполнить попытку подключения, потому что связанная сторона не ответила должным образом через какое-то время или не удалось установить соединение, потому что подключенный хост не смог ответить 74.125.68.109:587" } Код ошибки: 10060 – Kenz

+0

Дайте ему предложение с предложением пользователя1666620. Я бы сказал, что это связано с учетными данными. – woodykiddy

ответ

4

Ваш код использует Gmail в качестве SMTP:

client.Host = "smtp.gmail.com"; 

Но вы указываете ваши SMTP учетные данные будут ваши окна учетной записи:

client.UseDefaultCredentials = true; 

Если Gmail, на самом деле ваш SMTP, вам нужно установить это ложь, а затем предоставить свои GMAIL учетные данные для входа.

Так что ваш код должен выглядеть следующим образом:

client.UseDefaultCredentials = false; 
client.Credentials = new System.Net.NetworkCredential("yourusername", "yourpassword"); 

Это также выглядит, как вы могли бы иметь проблемы брандмауэра, а

{ «Не удалось подключиться к удаленному серверу»} { " попытка подключения была неудачной, потому что связанная сторона не ответила должным образом через какое-то время или установив соединение не удалось, потому что подключенный хост не смог ответить 74.125.68.109:587 "} Код ошибки: 10060

Убедитесь, что приложение имеет доступ к Интернету, а необходимые порты открыты для доступа к gmail. Также убедитесь, что в вашей учетной записи gmail разрешено меньше приложений ssecure и что, если вы используете двухфакторную аутентификацию, вы создали пароль для конкретной учетной записи для учетной записи и используете ее для подключения.

Как включить менее безопасные приложения: https://support.google.com/accounts/answer/6010255?hl=en

Вы можете также изменить как ваш MailAddress.To населен:

message.To.Add(new MailAddress("DestinationMailAddress")); 
+0

Во-первых, я также отключил брандмауэр, но та же проблема остается. – Kenz

+0

@ Kenz предоставляют дополнительную информацию. Вы единственный, кто может видеть, что не так, никто из нас не может догадываться о вас. Вы используете двухфакторную аутентификацию? Включили ли вы менее безопасные приложения для своей учетной записи gmail? – user1666620

+0

sry, Can u скажите, как включить менее безопасное приложение для моей учетной записи gmail? – Kenz

0

Поскольку функциональность обернута вы должны использовать сообщение внутреннего исключения, чтобы получить подробное сообщение об ошибке. Причина отказа будет прямо здесь!

public static void Main() 
{ 
    try { 
     SendMail(); 
    } 
    catch(Exception e) { 
    if (e.InnerException != null) 
     Console.WriteLine("Inner exception: {0}", e.InnerException); 
    } 

}

0

сделать эти изменения

client.UseDefaultCredentials = false; 
client.Credentials = new System.Net.NetworkCredential("yourusername", "yourpassword"); 

И это тоже

http://docs.helpscout.net/article/120-smtp-settings

Полный рабочий код

protected void SendMail() 
     { 
      MailMessage msg = new MailMessage(); 
      System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient(); 
      try 
      { 
       msg.Subject = "Add Subject"; 
       msg.Body = "Add Email Body Part"; 
       msg.From = new MailAddress("Valid Email Address"); 
       msg.To.Add("Valid Email Address"); 
       msg.IsBodyHtml = true; 
       client.Host = "smtp.gmail.com"; 
       System.Net.NetworkCredential basicauthenticationinfo = new System.Net.NetworkCredential("Valid Email Address", "Password"); 
       client.Port = int.Parse("587"); 
       client.EnableSsl = true; 
       client.UseDefaultCredentials = false; 
       client.Credentials = basicauthenticationinfo; 
       client.DeliveryMethod = SmtpDeliveryMethod.Network; 
       client.Send(msg); 
      } 
      catch (Exception ex) 
      { 
       log.Error(ex.Message); 
      } 
     } 
Смежные вопросы