在 ABP SmtpEmailSender 中更改默认发件人电子邮件地址
Change default sender email address in ABP SmtpEmailSender
我正在使用 ASP.NET 样板框架发送邮件通知。我想根据场景更改发件人邮件地址(一个用于员工,另一个用于最终用户)
请告诉我如何在 运行 时更改发件人邮件地址(默认配置除外)。
mailSender.SendAsync(
to: toEmailAddress,
subject: mailSubject,
body: mailBody,
isBodyHtml: true);
提前致谢。
这里有两种方法:
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()
);
});
您可以使用abp.dll中IEmailSender
的以下方法。参考 API Document.
void Send(
string from,
string to,
string subject,
string body,
bool isBodyHtml = true
)
您只需要根据您的要求设置 from
和 to
参数。
您可以根据角色或权限区分员工和其他用户。
我正在使用 ASP.NET 样板框架发送邮件通知。我想根据场景更改发件人邮件地址(一个用于员工,另一个用于最终用户)
请告诉我如何在 运行 时更改发件人邮件地址(默认配置除外)。
mailSender.SendAsync(
to: toEmailAddress,
subject: mailSubject,
body: mailBody,
isBodyHtml: true);
提前致谢。
这里有两种方法:
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() ); });
您可以使用abp.dll中IEmailSender
的以下方法。参考 API Document.
void Send(
string from,
string to,
string subject,
string body,
bool isBodyHtml = true
)
您只需要根据您的要求设置 from
和 to
参数。
您可以根据角色或权限区分员工和其他用户。