在我的 Startup.cs
我有
services.AddTransient<Microsoft.AspNetCore.Identity.UI.Services.IEmailSender, EmailSender>(i =>
new EmailSender(
Configuration["EmailSender:Host"],
Configuration.GetValue<int>("EmailSender:Port"),
Configuration.GetValue<bool>("EmailSender:EnableSSL"),
Configuration["EmailSender:UserName"],
Configuration["EmailSender:Password"]
));
我有一个类
public class EmailSender : IEmailSender
{
/* snip */
public Task SendEmailAsync(string email, string subject, string htmlMessage)
{
var client = new SmtpClient(_Host, _Port)
{
Credentials = new NetworkCredential(_UserName, _Password), EnableSsl = _EnableSSL
};
return client.SendMailAsync(
new MailMessage(_UserName, email, subject, htmlMessage) { IsBodyHtml = true }
);
}
}
我在运行
smtp4dev
.当我尝试注册用户或忘记密码时,不会发送电子邮件。在
SendEmailAsync
中的断点处没有被击中。我不明白我需要做什么才能让这个东西发送电子邮件。
你?如果是这样,你能告诉我它是什么吗?
这是在某处记录的吗?
最佳答案
如果您确定没有发送电子邮件进行电子邮件验证和密码重置,请忽略此建议。但是,如果您的电子邮件被发送用于电子邮件验证,但没有被发送用于密码重置,那么请继续阅读。
IEmailSender 的构造函数中的断点是否被击中?如果是这样,请确保您尝试为其重置密码的用户具有经过验证的电子邮件地址。如果未验证电子邮件地址,Identity 将不会发送任何其他电子邮件通知。
或者,暂时禁用已确认的帐户并查看是否正在发送您的电子邮件。
services.AddDefaultIdentity<ApplicationUser>(options =>
{
options.SignIn.RequireConfirmedAccount = false;
})
关于ASP.NET Core 标识不发送电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60329784/