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); } }
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)}\""); }
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(); } }
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}\""); } }