2016-04-04 8 views
0

Я пробовал несколько вещь, как:C#: Ошибка отправки почты

  • использовать различные вариации, порты, SSL включен или выключен, ...
  • Другой поставщик услуг электронной почты
  • Настройка «Разрешить менее безопасные приложения» в настройках аккаунта GMAIL

Вопрос:

  • Как исправить эту ошибку и отправить вложения успешно?
  • В чем причина этой ошибки?
  • Это потому, что порт может быть заблокирован?

Ошибка:

Exception thrown: 'System.IO.IOException' in System.dll 
Exception thrown: 'System.Net.Mail.SmtpException' in System.dll 
System.Net.Mail.SmtpException: Failure sending mail. ---> System.IO.IOException: Unable to read data from the transport connection: net_io_connectionclosed. 
    at System.Net.Mail.SmtpReplyReaderFactory.ProcessRead(Byte[] buffer, Int32 offset, Int32 read, Boolean readLine) 
    at System.Net.Mail.SmtpReplyReaderFactory.ReadLines(SmtpReplyReader caller, Boolean oneLine) 
    at System.Net.Mail.SmtpReplyReaderFactory.ReadLine(SmtpReplyReader caller) 
    at System.Net.Mail.SmtpConnection.GetConnection(ServicePoint servicePoint) 
    at System.Net.Mail.SmtpTransport.GetConnection(ServicePoint servicePoint) 
    at System.Net.Mail.SmtpClient.GetConnection() 
    at System.Net.Mail.SmtpClient.Send(MailMessage message) 
    --- End of inner exception stack trace --- 
    at System.Net.Mail.SmtpClient.Send(MailMessage message) 
    at TreeView.TreeView.<Email>d__28.MoveNext() in C:\Users\Alexander\Documents\Visual Studio 2015\Projects\TreeView\TreeView\TreeView\TreeView.cs:line 365 

Код:

public void Email() 
{ 
    try 
    { 
     SmtpClient client = new SmtpClient() 
     { 
      Host = @"smtp.gmail.com", 
      Port = 465, 
      Credentials = new NetworkCredential(@"[email protected]", @"Password"), 
      UseDefaultCredentials = false, 
      DeliveryMethod = SmtpDeliveryMethod.Network, 
      EnableSsl = true 
     }; 

     MailMessage message = new MailMessage() 
     { 
      From = new MailAddress(@"[email protected]"), 
      Subject = @"Test", 
      Body = @"Test", 
      Priority = MailPriority.Normal 
     }; 

     message.To.Add(@"[email protected]"); 
     Attachment file = new Attachment(@"C:\Users\Alexander\Documents\File.txt"); 
     message.Attachments.Add(file); 

     client.Send(message); 
    } 
    catch { } 
} 
+0

Вы можете попробовать порт 587 –

+0

... и попробуйте закомментировать 'DeliveryMethod = SmtpDeliveryMethod.Network' линии. –

+0

Я пробовал это, все еще не работает. – HovyTech

ответ

1

Для Gmail у меня есть

SmtpClient client = new SmtpClient(); 
client.Host = "smtp.gmail.com"; 

client.Port = 587; 

client.EnableSsl = true; 
client.Credentials = new NetworkCredential("[email protected]", "mygmailpassword"); 
       ////email.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network ; 

PS Вы, возможно, потребуется включить этот :

https://support.google.com/accounts/answer/6010255?hl=en

APPEND:

Скачать этот инструмент:

https://www.microsoft.com/en-us/download/details.aspx?id=24009

И если вы можете запросить этот порт/адрес

Я получаю следующие результаты:

============================================= 

*Starting portqry.exe -n smtp.gmail.com -e 587 -p TCP ... 
Querying target system called: 
smtp.gmail.com 
Attempting to resolve name to IP address... 
Name resolved to 74.125.29.109 
querying... 
TCP port 587 (unknown service): LISTENING 
portqry.exe -n smtp.gmail.com -e 587 -p TCP exits with return code 0x00000000.* 
+0

Попробуйте отправить БЕЗ вложения сначала ... чтобы проверить правильность настроек. Затем отлаживайтесь с вложениями. – granadaCoder

+0

Все еще не работает. – HovyTech

+0

Он уже пытался включить «Менее безопасные приложения», это указано в третьем вопросе в его вопросе. :) –

0

Установка UseDefaultCredentials всегда будет устанавливать Credentials на null.

Поэтому перед установкой Credentials вы должны установить UseDefaultCredentials = true/false.

Ссылка: https://stackoverflow.com/a/27896975/5075227

Смежные вопросы