ASP Core 2.1电子邮件确认

Far*_*shi 3 c# asp.net-core asp.net-core-identity

已经搜索了很长时间,但是没有找到任何有关如何以SMTP形式设置帐户/电子邮件确认的来源,而不是使用Razor类库的ASP Core 2.1项目的任何其他方式(如使用SendGrid / MailKit)。

在这方面有什么建议吗?在这方面如何使用IdentityUser?是否有必要首先搭建身份?请查看是否有任何专家可以在这方面提供帮助。

mar*_*icz 9

建议在生产中使用SendGrid和其他服务,因为这些服务已设置为可以正确缩放并可以处理一次发送数百万封电子邮件。

但是,我非常感谢在开发人员中运行您的应用程序时设置SMTP电子邮件会很好。

因此,在大多数情况下,您可以按照文档设置电子邮件确认。您需要更改的是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);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,您只需在ConfigureServices中将其配置为服务即可Startup.cs

services.AddTransient<IEmailSender, DevEmailSender>();
Run Code Online (Sandbox Code Playgroud)

此处不设置SMTP服务器,但是例如,如果您有gmail,则可以按照此博客文章中的操作方法进行操作。再次提醒您,这不是生产策略,实际上是向您的Gmail帐户开放安全漏洞,而google在您设置时会向您突出显示该安全漏洞。但是,如果您使用的是一次性帐户,这可能是使ASP.NET Core Identity进行电子邮件确认的快速而肮脏的解决方案。