Email buildEmail(IEmailAudience audience, Action <EmailBuilder> email) { var builder = new EmailBuilder(_emailClient, _templateService); builder.To(audience.To); if (audience.From != null) { builder.From(audience.From.EmailAddress, audience.From.DisplayName); } if (audience.Cc != null) { builder.Cc(audience.Cc); } if (audience.Bcc != null) { builder.Bcc(audience.Bcc); } email(builder); var builtEmail = builder.Build(); ensureToAndFromHaveNotBeenModifed(builtEmail, audience); //ensureCcAndBccHaveNotBeenModifed(builtEmail, audience); return(builtEmail); }
void ensureToAndFromHaveNotBeenModifed(Email builtEmail, IEmailAudience audience) { if (!Equals(builtEmail.To, audience.To) || !Equals(builtEmail.From, audience.From)) { throw new EmailBuilderException( $"You can not modify the '{nameof(Email.To)}' or '{nameof(Email.From)}' parameters when targeting a specific audience. " + $"Use the '{nameof(Create)}' method if you need control over these."); } }
public Email CreateFor(IEmailAudience audience, Action <EmailBuilder> email) { return(buildEmail(audience, email)); }