我正在使用本教程通过电子邮件确认注册用户,但我找不到emailservice
课程。
我正在使用带有 Identity 2.2 的 MVC 5。
我正在使用本教程通过电子邮件确认注册用户,但我找不到emailservice
课程。
我正在使用带有 Identity 2.2 的 MVC 5。
谢谢,但我已经找到了解决方案
我已经创建了类 emailservice 和他们
从用户管理器中选择电子邮件,像这样
userManager.EmailService = new EmailService();
据我所知,没有像EmailService
通常使用SmtpClient
该类发送电子邮件这样的 .net 类:
SmtpClient client = new SmtpClient("server.address.com");
MailAddress from = new MailAddress(fromAddress, fromName);
MailMessage msg = new MailMessage();
msg.From = from;
foreach(string addr in to)
msg.To.Add(addr);
msg.Body = content;
msg.Subject = subject;
client.Send(msg);
我有同样的问题,并使用了以下解决方案。首先,在您的项目中创建一个名为 services 的新文件夹,并使用教程中的以下代码创建一个新类:
namespace YourProject.Services
{
public class EmailService : IIdentityMessageService
{
public async Task SendAsync(IdentityMessage message)
{
await configSendGridasync(message);
}
// Use NuGet to install SendGrid (Basic C# client lib)
private async Task configSendGridasync(IdentityMessage message)
{
var myMessage = new SendGridMessage();
myMessage.AddTo(message.Destination);
myMessage.From = new System.Net.Mail.MailAddress("no-reply@your-domain.com", "Customer Service");
myMessage.Subject = message.Subject;
myMessage.Text = message.Body;
myMessage.Html = message.Body;
var credentials = new NetworkCredential(
ConfigurationManager.AppSettings["SendGridUsername"],
ConfigurationManager.AppSettings["SendGridPassword"]
);
// Create a Web transport for sending email.
var transportWeb = new Web(credentials);
// Send the email.
if (transportWeb != null)
{
await transportWeb.DeliverAsync(myMessage);
}
else
{
Trace.TraceError("Failed to create Web transport.");
await Task.FromResult(0);
}
}
}
}
然后,我所做的是将控制器中 UserManager 对象的 EmailService 属性设置为 EmailService 类的新实例(一直滚动到右侧以查看它,对此感到抱歉):
namespace YourProject.Controllers
{
public class UserManagementController : Controller
{
private UserManager<ApplicationUser> UserManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext())){EmailService = new Services.EmailService()};
// GET: UserManagement
然后,当你打电话
UserManager.SendEmailAsync(user.Id, subject, body);
它将使用您在上面的 EmailService 类中配置的 SendGrid 帐户发送电子邮件。