ASP Core 2.1电子邮件确认

问题描述 投票:2回答:3

一直在搜索相当一段时间,但没有找到任何如何使用Razor类库为SMTP Core 2.1项目设置SMTP表单中的帐户/电子邮件确认,而不是任何其他模式,如使用SendGrid / MailKit。

在这方面有什么建议吗?如何在这方面使用IdentityUser?是否有必要首先支持身份?请看看你们中的任何一位专家是否可以提供这方面的帮助。

c# asp.net-core asp.net-core-identity
3个回答
6
投票

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

但是,我很欣赏在dev中运行您的应用程序时设置SMTP电子邮件会很好。

因此,在大多数情况下,您可以按照the docs设置电子邮件确认。您需要更改的是使用SMTP服务器的EmailSender实现。

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("[email protected]")
            };
            mailMessage.To.Add(email);
            mailMessage.Subject = subject;
            mailMessage.Body = htmlMessage;
            return client.SendMailAsync(mailMessage);
        }
    }
}

然后你只需要将它配置为ConfigureServices中的Startup.cs中的服务:

services.AddTransient<IEmailSender, DevEmailSender>();

设置SMTP服务器不在此范围内,但如果你有gmail,你可以按照this blog post的说法进行操作。再次,请记住,这不是一个生产策略,实际上会打开您的Gmail帐户,直到安全漏洞,谷歌将在您设置它时突出显示。但是,如果您使用丢弃帐户,这可能是一个快速而又脏的解决方案,可以使用ASP.NET Core Identity获得电子邮件确认。


1
投票

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

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

0
投票

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

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