我使用ASP.NET Boilerplate框架发送邮件通知。我想根据场景更改发件人邮件地址(一个用于员工,另一个用于最终用户)
请告诉我如何在运行时更改发件人邮件地址(默认配置除外)。
mailSender.SendAsync(
to: toEmailAddress,
subject: mailSubject,
body: mailBody,
isBodyHtml: true);
提前致谢。
答案 0 :(得分:1)
以下是两种方式:
IEmailSender
有overloaded method,其中包含from
参数:
mailSender.SendAsync(
from: isEmployee ? employeeSenderEmailAddress : endUserSenderEmailAddress,
to: toEmailAddress,
subject: mailSubject,
body: mailBody,
isBodyHtml: true);
您可以继承SmtpEmailSenderConfiguration
,注入IAbpSession
并覆盖UserName
getter。这样,您就可以抽象出电子邮件地址逻辑。
public override string UserName
{
get
{
var isEmployee = AbpSession.UserId == 0; // Example
return isEmployee ? employeeSenderEmailAddress : endUserSenderEmailAddress;
}
}
请记住替换模块的PreInitialize
方法中的服务:
Configuration.ReplaceService(typeof(IEmailSenderConfiguration), () =>
{
IocManager.IocContainer.Register(
Component.For<IEmailSenderConfiguration, ISmtpEmailSenderConfiguration>()
.ImplementedBy<MySmtpEmailSenderConfiguration>()
.LifestyleTransient()
);
});
答案 1 :(得分:1)
您可以在abp.dll中使用以下IEmailSender
方法。请参阅API Document。
void Send(
string from,
string to,
string subject,
string body,
bool isBodyHtml = true
)
您只需根据自己的要求设置from
和to
参数。
您可以根据角色或权限区分员工和其他用户。