コード例 #1
0
ファイル: Email.cs プロジェクト: lulzzz/PointlessWaymarksCms
        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);
        }
コード例 #2
0
        public static MailMessage ToBuildMailMessage(this HtmlEmail htmlEmail, string contentRootPath)
        {
            var htmlString = htmlEmail.GetHtmlBase(contentRootPath);

            AddAlternateView(htmlEmail.MailMessage, htmlString);

            return(htmlEmail.MailMessage);
        }
コード例 #3
0
ファイル: EmailUtility.cs プロジェクト: yubanaswa/Travelogy
        /// <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;
        }
コード例 #4
0
        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());
        }
コード例 #5
0
ファイル: Email.cs プロジェクト: lulzzz/PointlessWaymarksCms
        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);
        }
コード例 #6
0
        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);
                        }
                    };
                });
            }
        }
コード例 #7
0
ファイル: Email.cs プロジェクト: lulzzz/PointlessWaymarksCms
        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);
        }
コード例 #8
0
ファイル: EmailUtility.cs プロジェクト: yubanaswa/Travelogy
        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)
                };
            }
        }