2014-11-14 2 views
0

Брандмауэр: выключен. Я получаю сообщение об ошибке времени. Эл. Почта и пароль проверяются.Почему я получаю соединение при попытке отправить электронное письмо через программу CS?

Исключение: System.Net.Mail.SmtpException: операция завершена.

Мой код

string filename = @"C:\emailsample.htm"; 

     string mailbody = System.IO.File.ReadAllText(filename); 

     mailbody = mailbody.Replace("##NAME##", firstname.Text); 

     string to = emailid.Text; 

     string from = "[email protected]"; 

     MailMessage message = new MailMessage(from, to); 

     message.Subject = "Auto Generated Mail"; 

     message.Body = mailbody; 

     message.BodyEncoding = Encoding.UTF8; 

     message.IsBodyHtml = true; 

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

     System.Net.NetworkCredential basic = new System.Net.NetworkCredential(from, "Password"); 

     client.EnableSsl = true; 

     client.Timeout = 20000; 

     client.DeliveryMethod = SmtpDeliveryMethod.Network; 

     client.UseDefaultCredentials = false; 

     client.Credentials = basic; 

     try 
     { 
      client.Send(message); 

     } 

     catch (Exception ex) 
     { 
      System.Windows.MessageBox.Show(ex.ToString()); 
      return; 
     } 
+0

Можете ли вы опубликовать исключение в полном объеме? – user1666620

+0

Сообщение: Операция завершена.
StackTrace: at System.Net.Mail.SmtpClient.Send (сообщение MailMessage) в WpfApplication1.EmailReg.SendEmail() в C: \ (путь здесь) \ EmailReg.xaml.cs: строка 149 – user3831886

ответ

0

Попробуйте изменить порт для 587.

Также проверьте, если из электронной почты является правильным.

SmtpClient client = new SmtpClient(); 
client.Port = 587; 
client.Host = "smtp.gmail.com"; 
client.EnableSsl = true; 
client.Timeout = 10000; 
client.DeliveryMethod = SmtpDeliveryMethod.Network; 
client.UseDefaultCredentials = false; 
client.Credentials = new System.Net.NetworkCredential("[email protected]","password"); 

MailMessage mm = new MailMessage("[email protected]", "[email protected]", "test", "test"); 
mm.BodyEncoding = UTF8Encoding.UTF8; 
mm.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure; 

client.Send(mm); 
+0

Я проверил. Выглядит хорошо. Также ранее это было 587, но оно дало безопасную ошибку аутентификации, поэтому я изменил ее на 465, после чего начал давать мне ошибку таймаута. – user3831886

+0

Я думаю, вам нужно предоставить NetworkCredentials. См. Этот код, который я отредактировал в ответе выше. –

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

  • Нет связанных вопросов^_^