У меня есть основной проект 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 на внешней машине. Кто-нибудь знает, как решить эту проблему?