ASP Core 2.1 подтверждение по электронной почте - PullRequest
0 голосов
/ 28 июня 2018

Искал в течение достаточно долгого времени, но не нашел никакого источника, как настроить подтверждение учетной записи / электронной почты в форме SMTP, вместо любого другого режима, такого как использование SendGrid / MailKit, для проекта ASP Core 2.1 с использованием Razor Библиотека классов.

Есть предложения на этот счет? Как использовать IdentityUser в этом отношении? Нужно ли сначала подмостить Идентичность? Посмотрите, может ли кто-нибудь из вас помочь в этом вопросе.

Ответы [ 3 ]

0 голосов
/ 28 июля 2018

Существует простой SMTP-сервер разработки, который можно использовать для целей разработки электронных писем, он называется fakeSMTP

0 голосов
/ 16 апреля 2019

При использовании приведенного выше примера кода @marcusturewicz с gmail SMTP добавьте номер порта (587), а также установите для EnableSsl значение ture, как показано ниже.

 var client = new SmtpClient("smtp.gmail.com",587)
        {
            UseDefaultCredentials = false,
            EnableSsl=true,
            Credentials = new NetworkCredential(userName, password)
        };
0 голосов
/ 29 июня 2018

Использование SendGrid и других сервисов рекомендуется на производстве, так как эти сервисы настроены для правильного масштабирования и могут обрабатывать отправку миллионов писем одновременно.

Тем не менее, я действительно ценю настройку электронной почты SMTP при запуске приложения в dev.

Таким образом, по большей части вы можете следовать документам при настройке подтверждения по электронной почте. Вам необходимо изменить реализацию EmailSender для использования вашего SMTP-сервера.

using System.Net;
using System.Net.Mail;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Identity.UI.Services;

namespace YourApp
{
    public class DevEmailSender : IEmailSender
    {
        public Task SendEmailAsync(string email, string subject, string htmlMessage)
        {
            var client = new SmtpClient("yoursmtpserver") {
                UseDefaultCredentials = false,
                Credentials = new NetworkCredential("yourusername", "yourpassword")
            };
            var mailMessage = new MailMessage {
                From = new MailAddress("account-security-noreply@yourdomain.com")
            };
            mailMessage.To.Add(email);
            mailMessage.Subject = subject;
            mailMessage.Body = htmlMessage;
            return client.SendMailAsync(mailMessage);
        }
    }
}

Тогда вам просто нужно настроить это как службы в ConfigureServices в Startup.cs:

services.AddTransient<IEmailSender, DevEmailSender>();

Настройка SMTP-сервера здесь выходит за рамки, но если у вас есть, например, gmail, вы можете следовать этому сообщению в блоге , как это сделать. Опять же, имейте в виду, что это не производственная стратегия, и она фактически открывает вашу учетную запись gmail для уязвимостей безопасности, которые Google выделит вам при настройке. Однако если вы используете одноразовую учетную запись, это может быть быстрым и грязным решением для получения подтверждения по электронной почте с помощью ASP.NET Core Identity.

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