Почта не отправляется - C#

Узнай цену своей работы

Формулировка задачи:

В программе есть канонический код:
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)
{
}
Который прекрасно работает с разными почтовыми серверами (gmail, mail и т.п.). Но с почтовым сервером одного хостера он работать не хочет, висит пытаясь try, и потом отваливается в catch по таймауту. При этом через Windows Live Mail с теми же данными (hostname, portnumber, SenderEmail, SenderPassword) все отправляется без проблем. И поэтому вопрос возник - чего в этом каноническом коде может не хватать?

Решение задачи: «Почта не отправляется»

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());
            }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.5 из 5