2013-07-19 1 views
2

Я пытаюсь отправить по электронной почте через сервер SMTP, но он не дает мне следующую ошибку:Отправка почты через SMTP не удается: имя почтового ящика не допускается

MailBox name not allowed. The server response was Senders must have valid reverse DNS

enter image description here К сожалению, я не смог найти Внушительные информацию решить проблему

Вот мой метод:

public void SendSmtp() 
{ 
    try 
    { 
     using (MailMessage message = new MailMessage()) 
     { 
      message.From = new MailAddress("[email protected]"); 
      message.To.Add(new MailAddress("[email protected]")); 


      message.Subject = "subject"; 
      message.Body = "body"; 
      message.IsBodyHtml = true; 

      // NetworkCredential basicCredential = new NetworkCredential("[email protected]", "password"); 
      try 
      { 
       using (SmtpClient client = new SmtpClient()) 
       { 
        client.Host = "mail.host.com"; 
        client.Port = 25; 
        client.UseDefaultCredentials = true; 
        // client.Credentials = basicCredential; 
        client.Send(message); 
        MessageBox.Show("Success!!"); 
       } 

      } 

      finally 
      { 
       //dispose the client 
       message.Dispose(); 
      } 

     } 
    } 
    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); 
       //client.Send(message); 
      } 
      else 
      { 
       Console.WriteLine("Failed to deliver message to {0}", 
        ex.InnerExceptions[i].FailedRecipient); 
      } 
     } 
    } 
} 

Это хорошо работает, когда я пытаюсь его на другом сервере или мой локальная машина не уверена, почему. Я установил свой доступ к SMTP-доступу на свой сервер. Пожалуйста, совет.

+0

Сообщение об ошибке говорит вам, что ваш обратный DNS не настроен правильно. Это не проблема с кодом, но обратитесь к вашему интернет-провайдеру за исправлением обратной CNS. –

+0

Для меня причиной была строка «client.UseDefaultCredentials = true;». Как только я удалил это, он сработал. –

ответ

2

Ошибка прямого ответа с сервера SMTP, к которому пытается подключиться ваш код. У вашего клиентского компьютера нет действительного обратного сопоставления DNS (например, 127.0.0.1 -> localhost), поэтому сервер SMTP отклоняет соединение.

Это может быть что-то простое, как ваш клиент, идентифицирующий себя как example.com, но когда SMTP-сервер выполняет обратный поиск, IP-адрес сервера возвращается как system-1-2-3.4.hostingprovider.com или аналогичный.

+0

Благодарим вас за информацию, пожалуйста, совет о том, как я могу ее решить, у меня не так много знаний в DNS – meda

+1

попробуйте сделать 'nslookup your.server.ip' и посмотреть, какое имя хоста появляется. вам придется идентифицировать себя с smtp как имя хоста. если нет обратного отображения, вам нужно поговорить с вашим интернет-провайдером, чтобы получить одну настройку. –

+0

его сервер IIS, предыдущий работник работал над настройкой DNS, где я могу получить дополнительную информацию об этом – meda

1

Оглядываясь на мой вопрос, могу вам сказать, что если вы столкнулись с этой проблемой, это не проблема в коде, это скорее проблема сети.

Быстрый способ проверить это, чтобы запустить ваш код в среде с меньшей блокировкой. Я получал эту ошибку только на моем рабочем сервере. Он отлично работал в разработке.

Это означает, что вам нужно закрыть визуальную студию и исследовать ее. Ошибка может быть введена в заблуждение, поэтому не полагайтесь на нее на 100%, вместо этого используйте инструменты для отладки вашей проблемы. Я использовал wireshark для проверки пакетов, и я заметил IP-адрес, который был отклонен на моем сервере SMTP.

Я не понимал, потому что на моем сервере было несколько сетевых карт в моем случае. То, что я не мог легко догадаться. Поэтому я советую использовать инструменты для просмотра сети трафика, и вы найдете причину.

Не угадывайте, используйте инструменты *, чтобы дать вам ответы.

* инструменты: в дополнение к Wireshark, такие сайты, как mxtoolbox может быть очень полезным

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