public virtual Task SendMessageAsync(TemplatedMailMessageDto message, object values, CultureInfo culture, CultureInfo uiCulture) { if (message == null) { throw new ArgumentNullException(nameof(message)); } if (values == null) { throw new ArgumentNullException(nameof(values)); } this.GetTemplates(message.TemplateName, out var subjectTemplate, out var bodyTextTemplate, out var bodyHtmlTemplate, uiCulture); var newMessage = this.ExpandTemplatedMessage(message, values, subjectTemplate, bodyTextTemplate, bodyHtmlTemplate, culture); return(this.mailerService.SendMessageAsync(newMessage)); }
protected MailMessageDto ExpandTemplatedMessage(TemplatedMailMessageDto templateMessage, object values, string subjectTemplate, string bodyTextTemplate = null, string bodyHtmlTemplate = null, CultureInfo culture = null) { if (templateMessage == null) { throw new ArgumentNullException(nameof(templateMessage)); } if (values == null) { throw new ArgumentNullException(nameof(values)); } if (subjectTemplate == null) { throw new ArgumentNullException(nameof(subjectTemplate)); } if (string.IsNullOrWhiteSpace(subjectTemplate)) { throw new ArgumentException("Value cannot be empty or whitespace only string.", nameof(subjectTemplate)); } if (string.IsNullOrWhiteSpace(bodyTextTemplate) && string.IsNullOrWhiteSpace(bodyHtmlTemplate)) { throw new ArgumentException($"At least one of {nameof(bodyTextTemplate)} and {nameof(bodyHtmlTemplate)} must be non-empty string."); } var r = new TemplateReplacer(values, culture ?? CultureInfo.CurrentCulture); var newMessage = new MailMessageDto { Subject = r.ReplacePlaceholders(subjectTemplate), BodyText = r.ReplacePlaceholders(bodyTextTemplate), BodyHtml = r.ReplacePlaceholders(bodyHtmlTemplate), Attachments = templateMessage.Attachments, Bcc = templateMessage.Bcc, Cc = templateMessage.Cc, CustomHeaders = templateMessage.CustomHeaders, From = templateMessage.From, Sender = templateMessage.Sender, ReplyTo = templateMessage.ReplyTo, To = templateMessage.To }; return(newMessage); }
public virtual Task SendMessageAsync(TemplatedMailMessageDto message, object values) => this.SendMessageAsync(message, values, CultureInfo.CurrentCulture, CultureInfo.CurrentUICulture);