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;
     }
 }
Example #4
0
 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;
        }