已经搜索了很长时间,但是没有找到任何有关如何以SMTP形式设置帐户/电子邮件确认的来源,而不是使用Razor的ASP Core 2.1项目如何使用诸如SendGrid / MailKit之类的任何其他模式。类库。
在这方面有什么建议吗?在这方面如何使用IdentityUser?是否有必要首先搭建身份?请查看是否有任何专家可以在这方面提供帮助。
答案 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)
};