public AccountController(IUserServices userServices,
                          ILogger <AccountController> logger,
                          TemplateEmailSender templateEmailSender,
                          IConfiguration configuration)
 {
     this.userServices        = userServices;
     this.logger              = logger;
     this.templateEmailSender = templateEmailSender;
     this.configuration       = configuration;
 }
Esempio n. 2
0
        private static void Main(string[] args)
        {
            // We'll dump the resulting HTML body in a file
            var file         = File.Create(Path.Combine(Environment.CurrentDirectory, "output.html"));
            var streamWriter = new StreamWriter(file, Encoding.UTF8);

            var emailSender = new DummyEmailSender(message => streamWriter.Write(message.Body));             // or new DummyEmailSender(Dump)

            var templateCompiler = new TemplateCompiler();
            var xmlSerializer    = new CustomXmlSerializer();

            var templateDirectory = Path.Combine(Environment.CurrentDirectory, "Templates");
            var layoutFile        = Path.Combine(templateDirectory, "layout.html");
            var xsltFilePath      = Path.Combine(templateDirectory, "ActivateAccount.xslt");
            var variables         = new
            {
                FirstName      = "Axel",
                LastName       = "Zarate",
                Username       = "******",
                Ignored        = default(object),
                Logo           = "http://www.logotree.com/images/single-logo-design/logo-design-sample-14.jpg",
                ActivationLink = "http://localhost/Account/Activate/azarate",
                Benefits       = new[]
                {
                    "Free support",
                    "Great discounts",
                    "Unlimited access"
                },
                IsPremiumUser = true
            };

            var templateEmailSender = new TemplateEmailSender(emailSender, templateCompiler, xmlSerializer)
            {
                LayoutFilePath = layoutFile
            };

            templateEmailSender.Send(xsltFilePath, variables, "*****@*****.**", "This is a template test");

            // Close the file
            streamWriter.Dispose();
            file.Close();

            Console.WriteLine("Ready.");
            Console.Read();
        }
        public static MailMessage ProductHtmlMailContent(List <ProductEmailDetails> productsToEmail, AmazonProductAPIContext.Regions region)
        {
            //StringWriter stringWriter = new StringWriter();
            //using (HtmlTextWriter writer = new HtmlTextWriter(stringWriter))
            //{
            //    writer.RenderBeginTag(HtmlTextWriterTag.Html);//Html open
            //    writer.RenderBeginTag(HtmlTextWriterTag.Body);//Body open

            //    writer.Write(GetAmazonLogoAndLink(region));//Insert logo and link

            //    writer.RenderBeginTag(HtmlTextWriterTag.Ul);//Unordered list open

            //    foreach(var key in productsToMail.Keys)
            //    {
            //        string product = key;
            //        string link = productsToMail[key];
            //        var tempWriter = GetLinkForProduct(product, link);
            //        writer.Write(tempWriter);
            //    }
            //    writer.RenderEndTag();//Unorder List close
            //    writer.RenderEndTag();//Body Close
            //    writer.RenderEndTag();//Html Close
            //}

            //return stringWriter.ToString();
            // We'll dump the resulting HTML body in a file
            string      status      = string.Empty;;
            MailMessage mailMessage = null;

            try
            {
                status = "Entered try bloc";
                var templateCompiler = new TemplateCompiler();
                var xmlSerializer    = new CustomXmlSerializer();

                var layoutFileName = "EmailLayout.html";
                var xslFileName    = "EmailTemplate.xslt";

                status = "Getting files from S3;";
                var layoutFile   = GetFileFromS3(layoutFileName);
                var xsltFilePath = GetFileFromS3(xslFileName);

                status = "Got files from S3";
                //var layoutFile = Path.Combine(templateDirectory, "EmailLayout.html");
                //var xsltFilePath = Path.Combine(templateDirectory, "EmailTemplate.xslt");

                var variables = new
                {
                    ProductsToEmail = productsToEmail.ToArray()
                };

                var templateEmailSender = new TemplateEmailSender(templateCompiler, xmlSerializer)
                {
                    LayoutFilePath = layoutFile
                };

                status      = "Calling construct message";
                mailMessage = templateEmailSender.ConstructMailMessage(xsltFilePath, variables);

                return(mailMessage);

                // Close the file
            }
            catch (Exception ex)
            {
                throw new Exception("Send email failed with exception " + status + ex.Message, ex);
            }
        }