Форма MVC, которая отправляет почту - PullRequest
1 голос
/ 29 октября 2011

В основном у меня есть форма MVC 3, которая отправляет почту в мой почтовый ящик, когда кто-то оставляет сообщение на моем сайте.

По какой-то причине он генерирует SmtpException с сообщением: «Ошибка отправки почты».

    [HttpPost]
    public ActionResult Contact(string name, string email, string message)
    {
        string From = "contactform@******.com";
        string To = "info@******.com";
        string Subject = name;
        string Body = name + " wrote:<br/><br/>" + message;

        System.Net.Mail.MailMessage Email = new System.Net.Mail.MailMessage(From, To, Subject, Body);
        System.Net.Mail.SmtpClient SMPTobj = new System.Net.Mail.SmtpClient("smtp.**********.net");

        SMPTobj.EnableSsl = false;
        SMPTobj.Credentials = new System.Net.NetworkCredential("info@*******.com", "*******");

        try
        {
            SMPTobj.Send(Email);
        }
        catch (Exception ex)
        {
            Debug.WriteLine(ex.Message);
            throw new Exception();
        }

        return View();
    }

Может ли это быть связано с локальным тестированием, а не с тестированием на сервере?

Ответы [ 2 ]

1 голос
/ 29 октября 2011

Я бы рекомендовал вам не перебрасывать новое исключение, а просто использовать

 catch (Exception ex)
 {
      Debug.WriteLine(ex.Message);
      throw;
 }

, перебрасывающее исключение сбрасывает стек, поэтому вы не можете надежно отследить источник ошибки.В этом случае (без повторной обработки) вы, вероятно, можете увидеть свойства InnerException и Status в visual studio, обычно это даст вам более подробную информацию о причине сбоя.(Часто блочный порт isp 25 трафика SMTP, если вы проводите локальное тестирование)

Во-вторых, вы можете попытаться настроить все детали подключения в web.config, а не жестко запрограммировать их в своем приложении, что упрощает тестирование изменений.,Ниже приведен пример использования gmail:

<system.net>
<mailSettings>
  <smtp deliveryMethod="Network" from="username@gmail.com">
    <network host="smtp.gmail.com" userName="username@gmail.com" password="password" enableSsl="true" port="587" />
  </smtp>
</mailSettings>
1 голос
/ 29 октября 2011

Вам нужно установить SmtpClient.Port на ваш почтовый порт хоста?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...