public void Send(EmailMessageType type, EmailMessageOptions options) { MailMessage message = EmailMessageFactory.Construct(type, options); try { _client.Send(message); } catch (Exception e) { throw new EmailSenderException($"Failed to send email from {message.From} to {message.To.FirstOrDefault()} with options {options}", e); } }
public static MailMessage Construct(EmailMessageType type, EmailMessageOptions options) { string emailTemplate; switch (type) { case EmailMessageType.EmailConfirmation: emailTemplate = GetEmailTemplate("Register", "confirmationEmailTemplate"); return(new EmailConfirmationEmailMessage(emailTemplate, options as ConfirmationEmailMessageOptions)); case EmailMessageType.LoginConfirmation: emailTemplate = GetEmailTemplate("Login", "confirmationEmailTemplate"); return(new LoginConfirmationEmailMessage(emailTemplate, options as ConfirmationEmailMessageOptions)); case EmailMessageType.TemperatureChangeRequest: emailTemplate = GetEmailTemplate("Home", "temperatureRequestEmailMessage"); return(new TemperatureRequestEmailMessage(emailTemplate, options as TemperatureRequestEmailMessageOptions)); default: throw new InvalidOperationException($"No email message defined for type {type}"); } }