Почта не отправляется - C#
Формулировка задачи:
В программе есть канонический код:
Который прекрасно работает с разными почтовыми серверами (gmail, mail и т.п.). Но с почтовым сервером одного хостера он работать не хочет, висит пытаясь try, и потом отваливается в catch по таймауту.
При этом через Windows Live Mail с теми же данными (hostname, portnumber, SenderEmail, SenderPassword) все отправляется без проблем.
И поэтому вопрос возник - чего в этом каноническом коде может не хватать?
SmtpClient Smtp = new SmtpClient(); Smtp.Host = hostname; Smtp.Port = portnumber; Smtp.EnableSsl = true; Smtp.DeliveryMethod = SmtpDeliveryMethod.Network; Smtp.Credentials = new NetworkCredential(SenderEmail, SenderPassword); MailMessage Message = new MailMessage(); Message.From = new MailAddress(SenderEmail); Message.To.Add(new MailAddress(RecpientEmail)); Message.Subject = "Subject"; Message.Body = "Body text"; try { Smtp.Send(Message); } catch (SmtpException) { }
Решение задачи: «Почта не отправляется»
textual
Листинг программы
catch (SmtpFailedRecipientsException ex) { for (int i = 0; i < ex.InnerExceptions.Length; i++) { SmtpStatusCode status = ex.InnerExceptions[i].StatusCode; if (status == SmtpStatusCode.MailboxBusy || status == SmtpStatusCode.MailboxUnavailable) { Console.WriteLine("Delivery failed - retrying in 5 seconds."); System.Threading.Thread.Sleep(5000); Smtp.Send(Message); } else { Console.WriteLine("Failed to deliver message to {0}", ex.InnerExceptions[i].FailedRecipient); } } } catch (Exception ex) { Console.WriteLine("Exception caught in RetryIfBusy(): {0}", ex.ToString()); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д