在ABP SmtpEmailSender中更改默认发件人电子邮件地址

时间:2018-01-28 09:26:28

标签: asp.net aspnetboilerplate

我使用ASP.NET Boilerplate框架发送邮件通知。我想根据场景更改发件人邮件地址(一个用于员工,另一个用于最终用户)

请告诉我如何在运行时更改发件人邮件地址(默认配置除外)。

mailSender.SendAsync(
  to: toEmailAddress,
  subject: mailSubject,
  body: mailBody,
  isBodyHtml: true);

提前致谢。

2 个答案:

答案 0 :(得分:1)

以下是两种方式:

  1. IEmailSenderoverloaded method,其中包含from参数:

    mailSender.SendAsync(
      from: isEmployee ? employeeSenderEmailAddress : endUserSenderEmailAddress,
      to: toEmailAddress,
      subject: mailSubject,
      body: mailBody,
      isBodyHtml: true);
    
  2. 您可以继承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

您只需根据自己的要求设置fromto参数。

您可以根据角色或权限区分员工和其他用户。