电子邮件重设密码不起作用,但账户确认却能正常工作。.NetCore

问题描述 投票:0回答:1

于是我按照这里的说明进行了操作。https:/docs.microsoft.comen-usaspnetcoresecurityauthenticationaconfirm?view=aspnetcore-3.1&tabs=visual-studio。

我的应用程序可以工作,并使用我设置的电子邮件服务发送账户确认电子邮件,但如果我去重置密码,身份服务没有调用电子邮件服务发送电子邮件指示。

但是,如果我去重置密码,身份服务并没有调用电子邮件服务来发送电子邮件指示。我到底做错了什么?

为什么身份服务知道如何使用电子邮件来确认帐户,但不能使用它来重置密码?

为了解情况

 startup.cs


 // requires
 services.AddTransient<IEmailSender, EmailSender>();
 services.Configure<AuthMessageSenderOptions>(Configuration);


 EmailSender.cs

public class EmailSender:IEmailSender
{
    public EmailSender(IOptions<AuthMessageSenderOptions> optionsAccessor)
    {
        Options = optionsAccessor.Value;
    }

    public AuthMessageSenderOptions Options { get; } //set only via Secret Manager

    public Task SendEmailAsync(string email, string subject, string message)
    {
        return Execute(Options.SendGridKey, subject, message, email);
    }

    public Task Execute(string apiKey, string subject, string message, string email)
    {
        var client = new SendGridClient(apiKey);
        var msg = new SendGridMessage()
        {
            From = new EmailAddress("[email protected]", Options.SendGridUser),
            Subject = subject,
            PlainTextContent = message,
            HtmlContent = message
        };
        msg.AddTo(new EmailAddress(email));

        // Disable click tracking.
        // See https://sendgrid.com/docs/User_Guide/Settings/tracking.html
        msg.SetClickTracking(false, false);

        return client.SendEmailAsync(msg);
    }
}
asp.net-core asp.net-core-identity
1个回答
1
投票

我们遇到了同样的问题,发现注册邮件正在发送,而密码重置邮件却没有。在我们的情况下,这是由于两个问题,即 AspNetUsers 表。

  1. 我们没有完成电子邮件确认的步骤,这设置了... ... EmailConfirmed 数据库中的bool,以 True
  2. 我们将数据从ASP.NET Core的早期版本迁移过来,其中两个电子邮件字段。EmailNormalizedEmail 没有设置,而是留下了 null.

一旦我们填充了缺失的电子邮件字段,并运行确认步骤--或者手动将标志改为 True-密码重置邮件开始工作。

© www.soinside.com 2019 - 2024. All rights reserved.