首页 > 解决方案 > ASP.NET Core 身份不发送电子邮件

问题描述

在我的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处没有命中。

我不明白我需要做什么才能让这个东西发送电子邮件。你?如果是这样,你能告诉我它是什么吗?这是在某处记录的吗?

标签: asp.netasp.net-coreasp.net-core-identity

解决方案


如果您确定电子邮件验证和密码重置均未发送,请忽略此建议。但是,如果您的电子邮件被发送用于电子邮件验证,但没有被发送用于密码重置,那么请继续阅读。

IEmailSender 的构造函数中的断点是否被命中?如果是这样,请确保您尝试为其重置密码的用户拥有经过验证的电子邮件地址。如果未验证电子邮件地址,Identity 将不会发送任何其他电子邮件通知。

或者,暂时禁用已确认的帐户并查看您的电子邮件是否正在发送。

            services.AddDefaultIdentity<ApplicationUser>(options =>
                {
                    options.SignIn.RequireConfirmedAccount = false;
                })

推荐阅读