ASP.NET Core 标识不发送电子邮件

标签 asp.net asp.net-core asp.net-core-identity

在我的 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/

相关文章:

c# - 在 MVC 6 应用程序中显示本地日期格式

asp.net-core - 仅限 Asp.net 核心身份外部提供者

c# - 无法在 asp.net core 2.2 应用程序中使用 ef core 2.2 通过 UserManager<TUser> 更新用户

c# - 具有一对多关系的自定义身份用户类在数据库中创建额外的列

c# - 单击一行时如何从 GridView 重定向

asp.net - 如何为项目中的所有文件运行 Visual Studio 标记验证

c# - ASP.NET Core 在构建过程中设置托管环境

c# - ASP.NET 核心 2.2 : what is the safest way of sharing request-specific data between framework classes?

asp.net - 在 GridView ASP.Net 中需要进度条

ASP.NET Web Api - "PATCH"使用 Delta<...> 且双属性不起作用