ASP.NET MVC Usermanager SendEmailAsync:如何更改发件人电子邮件
ASP.NET MVC Usermanager SendEmailAsync: How to change sender email
我正在使用带有标识 2 的 ASP.NET MVC5,有一个名为 IdentityConfig.cs 的文件,其中包含我已经实现的 EmailSerive:
public class EmailService : IIdentityMessageService
{
public async Task SendAsync(IdentityMessage message)
{
using (var client = new SmtpClient())
{
using (var mailMessage = new MailMessage("info@mydomain.com", message.Destination, message.Subject, message.Body))
{
mailMessage.IsBodyHtml = true;
await client.SendMailAsync(mailMessage);
}
}
}
}
通过此设置,我可以通过在 UserManager 上调用此方法来发送用户电子邮件:
await UserManager.SendEmailAsync(user.Id, emailSubject, emailBody);
到目前为止一切顺利,但我希望根据主题从不同的发件人发送电子邮件。比如账号registration/reset密码会有sender account@[=25=,信息查询邮件会有sender info@mydomain.com,sales/orderplacement会有sender sales@mydomain.com.
不幸的是,SendEmailAsync 方法无法设置发件人,我也不知道如何在 EmailService 中实现这一点。谁能帮忙解决这个问题?有没有办法向 UserManager 或 EmailSerivce 添加扩展方法,以便我可以选择指定不同的发件人?
如果我处在你的位置,我会把我所有的电子邮件都放在 web.config 文件中,并在 EmailService 中以私有方法访问它 class 根据主题returns 相关的邮件,然后在邮件参数处调用此方法。例如:
public async Task SendAsync(IdentityMessage message)
{
using (var client = new SmtpClient())
{
//calling getEmail() instead of email
using (var mailMessage = new MailMessage(getEmail(message.Subject),
message.Destination, message.Subject, message.Body))
{
mailMessage.IsBodyHtml = true;
await client.SendMailAsync(mailMessage);
}
}
}
private string getEmail(string subject)
{
var emails = ConfigurationManager.AppSettings["Emails"];
string[] emailAddresses = emails.Split(',');
//your logic here
return email;
}
我正在使用带有标识 2 的 ASP.NET MVC5,有一个名为 IdentityConfig.cs 的文件,其中包含我已经实现的 EmailSerive:
public class EmailService : IIdentityMessageService
{
public async Task SendAsync(IdentityMessage message)
{
using (var client = new SmtpClient())
{
using (var mailMessage = new MailMessage("info@mydomain.com", message.Destination, message.Subject, message.Body))
{
mailMessage.IsBodyHtml = true;
await client.SendMailAsync(mailMessage);
}
}
}
}
通过此设置,我可以通过在 UserManager 上调用此方法来发送用户电子邮件:
await UserManager.SendEmailAsync(user.Id, emailSubject, emailBody);
到目前为止一切顺利,但我希望根据主题从不同的发件人发送电子邮件。比如账号registration/reset密码会有sender account@[=25=,信息查询邮件会有sender info@mydomain.com,sales/orderplacement会有sender sales@mydomain.com.
不幸的是,SendEmailAsync 方法无法设置发件人,我也不知道如何在 EmailService 中实现这一点。谁能帮忙解决这个问题?有没有办法向 UserManager 或 EmailSerivce 添加扩展方法,以便我可以选择指定不同的发件人?
如果我处在你的位置,我会把我所有的电子邮件都放在 web.config 文件中,并在 EmailService 中以私有方法访问它 class 根据主题returns 相关的邮件,然后在邮件参数处调用此方法。例如:
public async Task SendAsync(IdentityMessage message)
{
using (var client = new SmtpClient())
{
//calling getEmail() instead of email
using (var mailMessage = new MailMessage(getEmail(message.Subject),
message.Destination, message.Subject, message.Body))
{
mailMessage.IsBodyHtml = true;
await client.SendMailAsync(mailMessage);
}
}
}
private string getEmail(string subject)
{
var emails = ConfigurationManager.AppSettings["Emails"];
string[] emailAddresses = emails.Split(',');
//your logic here
return email;
}