Пример #1
0
        public void each_message_should_have_only_one_target_client()
        {
            var pictureRes     = Substitute.For <IPictureResizer>();
            var templateReader = Substitute.For <IMailTemplateReader>();

            var content  = @"..\..\Newsletter\TestFiles\3.jpg";
            var resource = new LinkedResource(content);

            const string template = "<html><body><img id=\"newProductImage\" /><a id=\"cancelSubLink\" /><a id=\"goToProduct\"/></body></html>";

            templateReader.GetTemplate(MailTemplateType.Newsletter).Returns(x => template);

            var mailMessage = new NewsletterMessage
            {
                To                = new[] { "*****@*****.**" },
                Body              = "",
                From              = "*****@*****.**",
                Subject           = "Subject",
                ProductUrl        = "TestUri",
                NewsLetterPicture = new NewsletterPicture
                {
                    LinkedResource = resource
                },
                NewsletterClients = new[]
                {
                    new NewsletterClient
                    {
                        Email      = "*****@*****.**",
                        Id         = "TestKlient1",
                        InsertDate = DateTime.Now
                    },
                    new NewsletterClient
                    {
                        Email      = "*****@*****.**",
                        Id         = "TestKlient2",
                        InsertDate = DateTime.Now
                    },
                    new NewsletterClient
                    {
                        Email      = "*****@*****.**",
                        Id         = "TestKlient3",
                        InsertDate = DateTime.Now
                    },
                    new NewsletterClient
                    {
                        Email      = "*****@*****.**",
                        Id         = "TestKlient4",
                        InsertDate = DateTime.Now
                    },
                }
            };

            var messageFactory = new MailMessageFactory(pictureRes, templateReader);
            var messages       = messageFactory.GetMessages(mailMessage);

            foreach (var message in messages)
            {
                message.To.Count.Should().Be(1);
            }
        }
Пример #2
0
        public void mail_message_should_contain_button_href()
        {
            var pictureRes     = Substitute.For <IPictureResizer>();
            var templateReader = Substitute.For <IMailTemplateReader>();

            var content  = @"..\..\Newsletter\TestFiles\3.jpg";
            var resource = new LinkedResource(content);

            const string template = "<html><body><img id=\"newProductImage\" /><a id=\"cancelSubLink\" /><a id=\"goToProduct\"/></body></html>";

            templateReader.GetTemplate(MailTemplateType.Newsletter).Returns(x => template);

            var productId   = Guid.NewGuid();
            var mailMessage = new NewsletterMessage
            {
                To                = new[] { "*****@*****.**" },
                Body              = "",
                From              = "*****@*****.**",
                Subject           = "Subject",
                ProductUrl        = "TestUri",
                ProductId         = productId,
                NewsLetterPicture = new NewsletterPicture
                {
                    LinkedResource = resource
                },
                NewsletterClients = new[]
                {
                    new NewsletterClient()
                    {
                        Email      = "*****@*****.**",
                        Id         = "TestKlient",
                        InsertDate = DateTime.Now
                    },
                }
            };

            var messageFactory = new MailMessageFactory(pictureRes, templateReader);
            var messages       = messageFactory.GetMessages(mailMessage);

            messages.First().Body.Should().Contain($"href=\"www.crochetbyjk.pl/newsletter/{ShortGuid.Encode(productId)}\"");
        }
Пример #3
0
        private async Task SendEmailsAboutNewProductAsync(Product newProduct, NewsletterClient[] newsletterClients)
        {
            var mainPicture = newProduct.ProductGallery.ToArray().Single(x => x.IsMainPhoto);
            var serverPath  = HostingEnvironment.MapPath(Path.Combine("~", mainPicture.Uri));

            var newsLetter = new NewsletterMessage
            {
                To                = newsletterClients.Select(x => x.Email).ToArray(),
                Body              = "",
                From              = "*****@*****.**",
                Subject           = "Dodano nowy produkt na crochetbyjk.pl",
                ProductUrl        = newProduct.ProductUrl,
                ProductId         = newProduct.IdProduct,
                NewsLetterPicture = new NewsletterPicture
                {
                    Width          = mainPicture.Width,
                    Height         = mainPicture.Height,
                    LinkedResource = new LinkedResource(Path.Combine("wwww.crochetbyjk.pl", serverPath), MediaTypeNames.Image.Jpeg)
                },
                NewsletterClients = newsletterClients
            };

            try
            {
                await emailSender.SendAsync(newsLetter);
            }
            catch (Exception ex)
            {
                newsLetter.NewsLetterPicture.LinkedResource.Dispose();
                var message = JsonConvert.SerializeObject(new { newsLetter.Body, Clients = newsLetter.NewsletterClients });
                logger.Error(ex, message);
            }
            finally
            {
                newsLetter.NewsLetterPicture.LinkedResource.Dispose();
            }
        }
Пример #4
0
        public void every_client_should_have_his_own_cancel_sub_link()
        {
            var pictureRes     = Substitute.For <IPictureResizer>();
            var templateReader = Substitute.For <IMailTemplateReader>();

            var content  = @"..\..\Newsletter\TestFiles\3.jpg";
            var resource = new LinkedResource(content);

            const string template = "<html><body><img id=\"newProductImage\" /><a id=\"cancelSubLink\" /><a id=\"goToProduct\"/></body></html>";

            templateReader.GetTemplate(MailTemplateType.Newsletter).Returns(x => template);

            var newsClients = new[]
            {
                new NewsletterClient
                {
                    Email      = "*****@*****.**",
                    Id         = "TestKlient1",
                    InsertDate = DateTime.Now
                },
                new NewsletterClient
                {
                    Email      = "*****@*****.**",
                    Id         = "TestKlient2",
                    InsertDate = DateTime.Now
                },
                new NewsletterClient
                {
                    Email      = "*****@*****.**",
                    Id         = "TestKlient3",
                    InsertDate = DateTime.Now
                },
                new NewsletterClient
                {
                    Email      = "*****@*****.**",
                    Id         = "TestKlient4",
                    InsertDate = DateTime.Now
                },
                new NewsletterClient
                {
                    Email      = "*****@*****.**",
                    Id         = "TestKlient5",
                    InsertDate = DateTime.Now
                },
            };
            var mailMessage = new NewsletterMessage
            {
                To                = new[] { "*****@*****.**" },
                Body              = "",
                From              = "*****@*****.**",
                Subject           = "Subject",
                ProductUrl        = "TestUri",
                NewsLetterPicture = new NewsletterPicture
                {
                    LinkedResource = resource
                },
                NewsletterClients = newsClients
            };

            var messageFactory = new MailMessageFactory(pictureRes, templateReader);
            var messages       = messageFactory.GetMessages(mailMessage);

            foreach (var message in messages)
            {
                var client = newsClients.Single(x => x.Email == message.To.Single().Address);
                message.Body.Should()
                .Contain($"href=\"https://www.crochetbyjk.pl/newsletter/potwierdz/{client.Id}\"");
            }
        }