public bool Send(EmailMessage message) { AlternateView textView; AlternateView htmlView; var smtpMessage = SmtpEmailProvider.BuildMessageAndViews(message, out textView, out htmlView); try { _client().Send(smtpMessage); return true; } catch { return false; } finally { if (htmlView != null) { htmlView.Dispose(); } if (textView != null) { textView.Dispose(); } } }
public static MailMessage BuildMessageAndViews(EmailMessage message, out AlternateView textView, out AlternateView htmlView) { var smtpMessage = new MailMessage { BodyEncoding = Encoding.UTF8, From = new MailAddress(message.From) }; if(message.To.Count > 0) smtpMessage.To.Add(string.Join(",", message.To)); if(message.ReplyTo.Count > 0) smtpMessage.ReplyToList.Add(string.Join(",", message.ReplyTo)); if(message.Cc.Count > 0) smtpMessage.CC.Add(string.Join(",", message.Cc)); if(message.Bcc.Count > 0) smtpMessage.Bcc.Add(string.Join(",", message.Bcc)); htmlView = null; textView = null; if (!string.IsNullOrWhiteSpace(message.HtmlBody)) { var mimeType = new ContentType("text/html"); htmlView = AlternateView.CreateAlternateViewFromString(message.HtmlBody, mimeType); smtpMessage.AlternateViews.Add(htmlView); } if (!string.IsNullOrWhiteSpace(message.TextBody)) { const string mediaType = "text/plain"; textView = AlternateView.CreateAlternateViewFromString(message.TextBody, smtpMessage.BodyEncoding, mediaType); textView.TransferEncoding = TransferEncoding.SevenBit; smtpMessage.AlternateViews.Add(textView); } return smtpMessage; }
public bool Send(EmailMessage message) { lock(Messages) { Messages.Add(message); return true; } }
private void DeliverAndLog(EmailMessage email) { if (email != null) { _sender.Send(email); } _repository.Save(email); }
public void Save(EmailMessage email) { UnitOfWork.Current.Insert(new Models.Email { From = email.From, ReplyTo = string.Join(",", email.ReplyTo), To = string.Join(",", email.To), CC = string.Join(",", email.Cc), BCC = string.Join(",", email.Bcc), Subject = email.Subject, TextBody = email.TextBody, HtmlBody = email.HtmlBody, DeliveredAt = email.DeliveredAt }); }
public EmailMessage CreateHtmlEmail(string htmlTemplate, dynamic model) { var hash = DotLiquidHashExtensions.FromDynamic(model); var htmlBody = PrepareBodyFromTemplate(htmlTemplate, hash); dynamic wrapped = new SafeHash((Hash)hash); var email = new EmailMessage { From = wrapped.From, To = wrapped.To, Subject = wrapped.Subject, HtmlBody = htmlBody }; return email; }
public EmailMessage CreateTextEmail(string textTemplate, dynamic model) { var hash = DotLiquidHashExtensions.FromDynamic(model); var textBody = PrepareBodyFromTemplate(textTemplate, hash); dynamic wrapped = new SafeHash((Hash)hash); if(!(wrapped.To is List<string>)) { wrapped.To = new List<string>(new[] { wrapped.To as string }); } var email = new EmailMessage { From = wrapped.From, To = wrapped.To, Subject = wrapped.Subject, TextBody = textBody }; return email; }