SMTP Email работает локально, но не на Devops - PullRequest
0 голосов
/ 23 октября 2019

У меня есть основной проект ASP.Net с контроллером учетных записей для обработки входов в систему и функциональности учетных записей для профилей пользователей. В этом контроллере у меня есть функция для обработки электронной почты, если пользователь забывает свой пароль через SMTP.

[HttpPost, Route("resetPasswordLink"), AllowAnonymous]
public async Task<IActionResult> sendResetPasswordLink([Required] string email)
{
    var dbUser = await UserManager.FindByNameAsync(email);
    if (dbUser != null)
    {
        var someURL = 'My URL Here'
        var token = await UserManager.GeneratePasswordResetTokenAsync(dbUser);
        var fromAddress = ConfigurationManager.AppSettings["SMTPFromAddress"];
        var mailServer = ConfigurationManager.AppSettings["SMTPServer"];

        var mail = new MailMessage();

        mail.From = new MailAddress(fromAddress);
        mail.To.Add(email);

        mail.Subject = "Password Reset";
        mail.IsBodyHtml = true;
        mail.Body += "<p>You have requested to change your password</p>";
        mail.Body += "<p></p>";
        mail.Body += "<p>You can reset your password by clicking <a href="+someURL+"/passwordReset/"+token+">here</a></p>";

        var smtp = new SmtpClient();
        smtp.Host = mailServer;
        try
        {
            smtp.Send(mail);
            return Ok("Email Sent");
        } catch(Exception ex)
        {
            return BadRequest("Email generated but failed to send " + ex);
        }
    } else
    {
        return BadRequest("Failed to send link");
    }
}

С моим app.config, содержащим мою конфигурацию SMPTP. Когда это выполняется локально, код работает отлично, и электронное письмо отправляется на существующее электронное письмо в системе. Однако, когда это публикуется в Azure Devops, я получаю эту ошибку:

System.Net.Mail.SmtpException: Ошибка при отправке почты. ---> System.Net.Sockets.SocketException: такой хост не известен

Я предполагаю, что это связано с тем, что Devops размещает код .NET на внешней машине. Кто-нибудь знает, как решить эту проблему?

1 Ответ

1 голос
/ 24 октября 2019

Значения конфигурации установлены правильно.

Это может быть проблема с сетью:

  • Настройка брандмауэра
  • Внутренняя сеть (SMTP-сервер) по сравнению с внешнейсеть (приложение)
...