ASP Core 2.1电子邮件确认

时间:2018-06-28 09:38:35

标签: c# asp.net-core asp.net-core-identity

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

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

3 个答案:

答案 0 :(得分:6)

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

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

因此,在大多数情况下,您可以按照the docs设置电子邮件确认。您需要更改的是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的{​​{1}}中将其配置为服务:

Startup.cs

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

答案 1 :(得分:0)

有一个简单的开发smtp服务器,可以用于发送电子邮件的开发目的,称为fakeSMTP

答案 2 :(得分:0)

当使用@marcusturewicz提供的上面的示例代码和gmail SMTP时,请添加端口号(587),并将EnableSsl设置为ture,如下所示。

 var client = new SmtpClient("smtp.gmail.com",587)
        {
            UseDefaultCredentials = false,
            EnableSsl=true,
            Credentials = new NetworkCredential(userName, password)
        };