ASP. NET Идентификатор ядра не отправляет электронную почту - PullRequest
0 голосов
/ 21 февраля 2020

В моем 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 не попадает.

Я не понимаю, что мне нужно сделать, чтобы эта штука отправляла по электронной почте. Вы? И если так, то можете ли вы сказать мне, что это такое? Это где-то задокументировано?

Ответы [ 2 ]

0 голосов
/ 23 февраля 2020

Если вы уверены, что электронные письма не отправляются как для проверки электронной почты, так и для сброса пароля, игнорируйте это предложение. Однако, если ваши электронные письма отправляются для проверки электронной почты, но не отправляются для сброса пароля, тогда, пожалуйста, продолжайте читать.

Удар по точке останова в конструкторе IEmailSender? Если это так, убедитесь, что у пользователя, для которого вы пытаетесь сбросить пароль, есть подтвержденный адрес электронной почты. Если адрес электронной почты не подтвержден, удостоверение не будет отправлять другие уведомления по электронной почте.

В качестве альтернативы временно отключите подтвержденные учетные записи и посмотрите, отправляются ли ваши электронные письма.

            services.AddDefaultIdentity<ApplicationUser>(options =>
                {
                    options.SignIn.RequireConfirmedAccount = false;
                })
0 голосов
/ 21 февраля 2020

Пожалуйста, добавьте фрагмент кода, где и как вы используете класс EmailSender, так как вы запросили документацию, которую вы можете сослаться на это https://docs.microsoft.com/en-us/aspnet/identity/overview/features-api/account-confirmation-and-password-recovery-with-aspnet-identity

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...