Я создаю свое первое приложение ASP.NET Core Razor Pages.
Я создал класс EmailSender
, который реализует IEmailSender
.
public class EmailSender : IEmailSender
{
private readonly EmailSettings Settings;
public EmailSender(IOptions<EmailSettings> emailSettings)
{
Settings = emailSettings.Value;
}
public async Task SendEmailAsync(string email, string subject, string htmlMessage)
{
using (MailMessage message = new MailMessage())
using (SmtpClient client = new SmtpClient())
{
client.Host = Settings.Host;
client.Port = Settings.Port;
client.Credentials = new NetworkCredential(Settings.UserName, Settings.Password);
client.EnableSsl = Settings.EnableSsl;
message.To.Add(email);
message.From = new MailAddress(Settings.FromAddress);
message.Subject = subject;
message.Body = htmlMessage;
message.IsBodyHtml = true;
await client.SendMailAsync(message);
}
await Task.CompletedTask;
}
}
И я 'я зарегистрировал EmailSender
в Startup.cs.
public void ConfigureServices(IServiceCollection services)
{
// Default initialization...
services.AddTransient<IEmailSender, EmailSender>();
services.Configure<EmailSettings>(Configuration.GetSection("EmailSettings"));
}
Мой код создается без ошибок.
Используя точки останова, я вижу, что когда я запускаю приложение и нажимаю Забыливаш пароль , вызывается конструктор EmailSender
, а экземпляр EmailSettings
имеет ожидаемые значения. И когда я ввожу свой адрес электронной почты и нажимаю Сброс пароля , конструктор EmailSender
вызывается во второй раз. Тем не менее, EmailSender.SendEmailAsync()
никогда не вызывается 1023 *, и электронное письмо не отправляется.
Я убежден, что мой класс EmailSender
настроен правильно, потому что вызывается конструктор. Но я не знаю, как определить причину, по которой SendEmailAsync()
никогда не вызывается.
У кого-нибудь есть предложение?