Изменить адрес электронной почты отправителя по умолчанию в ABP SmtpEmailSender

Я использую платформу ASP.NET Boilerplate для отправки уведомлений по почте. Я хочу изменить адрес электронной почты отправителя на основе сценариев (один для сотрудников, а другой для конечных пользователей)

Пожалуйста, сообщите мне, как изменить адрес электронной почты отправителя во время выполнения (кроме конфигурации по умолчанию).

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

Заранее спасибо.


person Kalai    schedule 28.01.2018    source источник


Ответы (2)


Вот 2 способа:

  1. IEmailSender имеет перегруженный метод который принимает параметр from:

    mailSender.SendAsync(
      from: isEmployee ? employeeSenderEmailAddress : endUserSenderEmailAddress,
      to: toEmailAddress,
      subject: mailSubject,
      body: mailBody,
      isBodyHtml: true);
    
  2. Вы можете создать подкласс SmtpEmailSenderConfiguration, внедрить IAbpSession и переопределить геттер UserName. Таким образом, вы абстрагируете логику адреса электронной почты.

    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()
            );
    });
    
person aaron    schedule 28.01.2018

Вы можете использовать описанный ниже метод IEmailSender в abp.dll. См. Документ API.

void Send(
string from,
string to,
string subject,
string body,
bool isBodyHtml = true

)

Вам просто нужно установить параметры from и to в соответствии с вашими требованиями.

Вы можете различать сотрудников и других пользователей на основе роли или разрешений.

person vivek nuna    schedule 28.01.2018