public static async Task <string> ToHtmlEmail(FileContent content, IProgress <string> progress) { if (content == null) { return(string.Empty); } var preprocessResults = BracketCodeCommon.ProcessCodesForEmail(content.BodyContent, progress); var bodyHtmlString = ContentProcessing.ProcessContent(preprocessResults, content.BodyContentFormat); var tags = Tags.TagListTextLinkList(content); tags.Style("text-align", "center"); var createdUpdated = $"<p style=\"text-align: center;\">{Tags.CreatedByAndUpdatedOnString(content)}</p>"; var possibleDownloadLink = FileParts.DownloadLinkTag(content); possibleDownloadLink.Style("text-align", "center"); var innerContent = HtmlEmail.ChildrenIntoTableCells( $"{await HtmlEmail.EmailSimpleTitle(content)}{bodyHtmlString}{possibleDownloadLink}{tags}{createdUpdated}{HtmlEmail.EmailSimpleFooter()}"); var emailHtml = HtmlEmail.WrapInNestedCenteringTable(innerContent); return(emailHtml); }
public static MailMessage ToBuildMailMessage(this HtmlEmail htmlEmail, string contentRootPath) { var htmlString = htmlEmail.GetHtmlBase(contentRootPath); AddAlternateView(htmlEmail.MailMessage, htmlString); return(htmlEmail.MailMessage); }
/// <summary> /// /// </summary> /// <param name="template"></param> /// <param name="parameters"></param> /// <returns></returns> protected HtmlEmail ProcessTemplate(HtmlEmailTemplate template, Dictionary<String, String> parameters) { HtmlEmail processedTemplate = new HtmlEmail(); processedTemplate.EmailSubject = ReplaceFields(template.Subject, parameters); processedTemplate.EmailText = ReplaceFields(template.Body, parameters); processedTemplate.FromAddress = template.FromAddress; processedTemplate.FromName = template.FromName; return processedTemplate; }
public static string GetHtmlBase(this HtmlEmail htmlEmail, string contentRootPath) { var builder = new StringBuilder(); var templateBase = Path.Combine(contentRootPath, EmailPaths.Base); builder.Append(File.ReadAllText(templateBase)); builder.Replace(EmailFields.Title, htmlEmail.Title); builder.Replace(EmailFields.Content, htmlEmail.Content); return(builder.ToString()); }
public static async Task <string> ToHtmlEmail(PhotoContent content, IProgress <string> progress) { if (content == null) { return(string.Empty); } var mdBuilder = new StringBuilder(); mdBuilder.AppendLine(BracketCodePhotos.Create(content)); var detailsList = new List <string> { content.Aperture, content.ShutterSpeed, content.Iso?.ToString("F0"), content.Lens, content.FocalLength, content.CameraMake, content.CameraModel, content.License }.Where(x => !string.IsNullOrWhiteSpace(x)).ToList(); mdBuilder.AppendLine($"<p style=\"text-align: center;\">Details: {string.Join(", ", detailsList)}</p>"); var tags = Tags.TagListTextLinkList(content); tags.Style("text-align", "center"); mdBuilder.AppendLine(tags.ToString()); mdBuilder.AppendLine(); if (!string.IsNullOrWhiteSpace(content.BodyContent)) { mdBuilder.AppendLine(content.BodyContent); } mdBuilder.AppendLine(); mdBuilder.AppendLine($"<p style=\"text-align: center;\">{Tags.CreatedByAndUpdatedOnString(content)}</p>"); var preprocessResults = BracketCodeCommon.ProcessCodesForEmail(mdBuilder.ToString(), progress); var bodyHtmlString = ContentProcessing.ProcessContent(preprocessResults, content.BodyContentFormat); var innerContent = HtmlEmail.ChildrenIntoTableCells( $"{await HtmlEmail.EmailSimpleTitle(content)}{bodyHtmlString}{HtmlEmail.EmailSimpleFooter()}"); var emailHtml = HtmlEmail.WrapInNestedCenteringTable(innerContent); return(emailHtml); }
public void Send(HtmlEmail htmlEmail, params string[] emails) { if (EmailConfiguration.IsEnabled) { Task.Run(() => { using (var client = new SmtpClient(EmailConfiguration.SmtpClient)) { client.Setup(EmailConfiguration); var mailMessage = htmlEmail.ToBuildMailMessage(ContentRootPath); mailMessage.AddEmails(emails); if (mailMessage.To.Any()) { client.Send(mailMessage); } }; }); } }
public static async Task <string> ToHtmlEmail(ImageContent content, IProgress <string> progress) { if (content == null) { return(string.Empty); } var mdBuilder = new StringBuilder(); mdBuilder.AppendLine(BracketCodeImages.Create(content)); if (!string.IsNullOrWhiteSpace(content.BodyContent)) { mdBuilder.AppendLine(); mdBuilder.AppendLine(content.BodyContent); } var tags = Tags.TagListTextLinkList(content); tags.Style("text-align", "center"); mdBuilder.AppendLine(tags.ToString()); mdBuilder.AppendLine(); mdBuilder.AppendLine($"<p style=\"text-align: center;\">{Tags.CreatedByAndUpdatedOnString(content)}</p>"); var preprocessResults = BracketCodeCommon.ProcessCodesForEmail(mdBuilder.ToString(), progress); var bodyHtmlString = ContentProcessing.ProcessContent(preprocessResults, content.BodyContentFormat); var innerContent = HtmlEmail.ChildrenIntoTableCells( $"{await HtmlEmail.EmailSimpleTitle(content)}{bodyHtmlString}{HtmlEmail.EmailSimpleFooter()}"); var emailHtml = HtmlEmail.WrapInNestedCenteringTable(innerContent); return(emailHtml); }
public DomingoBlError SendEmailWithAttachments(string emailAlias, List<MailAddress> deliveryAddresses, Dictionary<String, String> parameters, string attachmentPath) { try { using (TravelogyDevEntities1 context = new TravelogyDevEntities1()) { // get the xml template from DB HtmlEmailTemplate emailTemplate = context.HtmlEmailTemplates.Where(p => p.Alias == emailAlias).FirstOrDefault(); if (emailTemplate == null) { return new DomingoBlError() { ErrorCode = 200, ErrorMessage = "Invalid template alias" }; } // replace the parameters into the template HtmlEmail processedTemplate = ProcessTemplate(emailTemplate, parameters); MailMessage objMessage = new MailMessage(); objMessage.From = new MailAddress(processedTemplate.FromAddress, processedTemplate.FromName); foreach (MailAddress address in deliveryAddresses) { processedTemplate.ToAddress = address.Address; // construct the SMTP mail and send objMessage.From = new MailAddress(processedTemplate.FromAddress, processedTemplate.FromName); objMessage.Subject = processedTemplate.EmailSubject; objMessage.IsBodyHtml = true; objMessage.Body = processedTemplate.EmailText; objMessage.To.Clear(); objMessage.To.Add(address); var sendinBlue = new API("ICdw29ZamvD0WXcJ"); // sendinblue access key from the portal Dictionary<string, Object> data = new Dictionary<string, Object>(); Dictionary<string, string> to = new Dictionary<string, string>(); to.Add(address.Address, address.DisplayName); List<string> from_name = new List<string>(); from_name.Add(processedTemplate.FromAddress); from_name.Add(processedTemplate.FromName); List<string> attachment = new List<string>(); attachment.Add(attachmentPath); data.Add("to", to); data.Add("from", from_name); data.Add("subject", processedTemplate.EmailSubject); data.Add("html", processedTemplate.EmailText); data.Add("attachment", attachment); Object sendEmail = sendinBlue.send_email(data); Console.WriteLine(sendEmail); // save the mail to DB // to save the mail on DB context.HtmlEmails.Add(processedTemplate); context.SaveChanges(); } } return new DomingoBlError() { ErrorCode = 0, ErrorMessage = "" }; } // exception part catch (FormatException ex) { return new DomingoBlError() { ErrorCode = 100, ErrorMessage = string.Format("Error : {0}", ex) }; } }