public async Task SendTransactionalEmailAsync_WithCustomHeaders_SendsEmail() { // arrange var base64Content = Convert.ToBase64String(Encoding.UTF8.GetBytes("Test file content")); var attachment = new Attachment("test1.txt", "text/plain", base64Content); var email = new TransactionalEmailBuilder() .WithFrom(new SendContact(_senderEmail)) .WithSubject("Test subject") .WithHtmlPart("<h1>Header</h1>") .WithHeader("header1", "value1") .WithHeader("header2", "value2") .WithAttachment(attachment) .WithCustomId("customIdValue") .WithTo(new SendContact(_senderEmail)) .Build(); // act var response = await _client.SendTransactionalEmailAsync(email); // assert Assert.AreEqual(1, response.Messages.Length); var message = response.Messages[0]; Assert.AreEqual("success", message.Status); Assert.AreEqual("customIdValue", message.CustomID); Assert.AreEqual(_senderEmail, message.To.Single().Email); }
public async Task SendEmailAsync(string email, string subject, string htmlMessage) { MailjetClient client = new MailjetClient(_mailJetSettings.PublicKey, _mailJetSettings.PrivateKey); MailjetRequest request = new MailjetRequest { Resource = Send.Resource, }; // construct your email with builder var malJetEmail = new TransactionalEmailBuilder() .WithFrom(new SendContact(_mailJetSettings.Email)) .WithSubject(subject) .WithHtmlPart(htmlMessage) .WithTo(new SendContact(email)) .Build(); // invoke API to send malJetEmail var response = await client.SendTransactionalEmailAsync(malJetEmail); if (response.Messages.Length == 1) { Console.WriteLine("Success"); } }
public async Task SendTransactionalEmailAsync_TemplateIsMissing_ReturnsError() { // arrange long nonExistentTemplateId = 12345; var email = new TransactionalEmailBuilder() .WithFrom(new SendContact(_senderEmail)) .WithSubject("Test subject") .WithTemplateId(nonExistentTemplateId) .WithTrackOpens(TrackOpens.enabled) .WithTo(new SendContact(_senderEmail)) .Build(); // act var response = await _client.SendTransactionalEmailAsync(email); // assert Assert.AreEqual(1, response.Messages.Length); var message = response.Messages[0]; Assert.AreEqual("error", message.Status); Assert.AreEqual(1, message.Errors.Count); var error = message.Errors.Single(); Assert.AreEqual(400, error.StatusCode); Assert.AreEqual("Template id \"12345\" doesn't exist for your account.", error.ErrorMessage); Assert.AreEqual("send-0010", error.ErrorCode); Assert.AreEqual("TemplateID", error.ErrorRelatedTo.Single()); }
public async Task SendTransactionalEmailAsync_TemplateIdReturnsWrongSenderType_advanceErrorHandlingTrue() { System.Collections.Generic.Dictionary <string, object> variables = new System.Collections.Generic.Dictionary <string, object>() { { "actionLink", "https://anywhere.com" } }; var email = new TransactionalEmailBuilder() .WithFrom(new SendContact(_senderEmail)) .WithTo(new SendContact(_senderEmail)) .WithTemplateId(3120707) .WithVariables(variables) .Build(); // invoke API to send email var response = await _client.SendTransactionalEmailAsync(email, advanceErrorHandling : true); Assert.AreEqual(1, response.Messages.Length); var message = response.Messages[0]; Assert.AreEqual("error", message.Status); Assert.AreEqual(1, message.Errors.Count); var error = message.Errors.Single(); Assert.AreEqual(400, error.StatusCode); }
public async Task SendMessage(Message <TContent> message) { var email = new TransactionalEmailBuilder() .WithFrom(new SendContact(_senderEmail, _senderName)) .WithSubject(message.Subject) .WithTextPart(GetTextPart(message.Content)) .WithHtmlPart(GetHtmlPart(message.Content)) .WithCustomId(GetCustomId(message.Content)) .WithTo(new SendContact(message.Contact.Email, message.Contact.Name)) .Build(); var response = await _mailjetClient.SendTransactionalEmailAsync(email); foreach (var responseMessage in response.Messages) { if (responseMessage.Status == "success") { _logger.LogInformation("Message sent for: {Email}", GetEmailList(responseMessage)); } else { _logger.LogInformation("Message fail for : {Email}", GetEmailList(responseMessage)); } } }
public async Task SendTransactionalEmailAsync_PassesCorrectRequestToMailjetServer() { // arrange string expectedRequest = File.ReadAllText(@"MockResponses/SendEmailV31Request.json"); var expectedJObject = JObject.Parse(expectedRequest); _handler .Expect(HttpMethod.Post, "https://api.mailjet.com/v3.1/send") .WithHeaders("Accept", "application/json") .WithHeaders("Authorization", "Basic YXBpLWtleTphcGktc2VjcmV0LWtleQ==") .With(message => { var content = message.Content.ReadAsStringAsync().Result; var actualJObject = JObject.Parse(content); return(JToken.DeepEquals(actualJObject, expectedJObject)); }) .Respond("application/json", "{}"); var email = new TransactionalEmailBuilder() .WithFrom(new SendContact("*****@*****.**", "Your Mailjet Pilot")) .WithHtmlPart("<h3>Dear passenger, welcome to Mailjet!</h3><br />May the delivery force be with you!") .WithSubject("Your email flight plan!") .WithTextPart("Dear passenger, welcome to Mailjet! May the delivery force be with you!") .WithTo(new SendContact("*****@*****.**", "Passenger 1")) .Build(); // act var response = await _client.SendTransactionalEmailAsync(email, true); // assert _handler.VerifyNoOutstandingExpectation(); }
public async Task SendAsync(EmailMessage message, CancellationToken ct = default) { var email = new TransactionalEmailBuilder() .WithFrom(new SendContact( message.FromEmail, message.FromName)) .WithTo(new SendContact( message.ToEmail, message.ToName)) .WithSubject(message.Subject) .WithHtmlPart(message.BodyHtml) .WithTextPart(message.BodyText) .Build(); var responses = await mailjetClient.SendTransactionalEmailAsync(email); if (responses.Messages is not { Length : 1 })
public async Task SendTransactionalEmailAsync_SendsEmail() { // arrange var email = new TransactionalEmailBuilder() .WithFrom(new SendContact(_senderEmail)) .WithSubject("Test subject") .WithHtmlPart("<h1>Header</h1>") .WithTo(new SendContact(_senderEmail)) .Build(); // act var response = await _client.SendTransactionalEmailAsync(email); // assert Assert.AreEqual(1, response.Messages.Length); var message = response.Messages[0]; Assert.AreEqual("success", message.Status); Assert.AreEqual(_senderEmail, message.To.Single().Email); }
public static async Task SendEmail(string emailAddress, string url) { MailjetClient client = new MailjetClient( Environment.GetEnvironmentVariable("$MJ_APIKEY_PUBLIC", EnvironmentVariableTarget.Machine), Environment.GetEnvironmentVariable("$MJ_APIKEY_PRIVATE", EnvironmentVariableTarget.Machine)); MailjetRequest request = new MailjetRequest { Resource = Send.Resource, }; // construct your email with builder var email = new TransactionalEmailBuilder() .WithFrom(new SendContact("*****@*****.**")) .WithSubject("YouTube Wrapped data ready to view") .WithHtmlPart("<p>Hey there!</p> <p>We are pleased to inform you that your data is ready to view at: <br/>" + url + "</p>") .WithTo(new SendContact(emailAddress)) .Build(); // invoke API to send email var response = await client.SendTransactionalEmailAsync(email); }
public async Task SendEmailWithTemplate(long templateId) { // arrange var testArrayWithValues = new [] { new { title = "testTitle1" }, new { title = "testTitle2" }, }; var variables = new Dictionary <string, object> { { "testVariableName", "testVariableValue" }, { "items", testArrayWithValues } }; var email = new TransactionalEmailBuilder() .WithTo(new SendContact(_senderEmail)) .WithFrom(new SendContact(_senderEmail)) .WithSubject("Test subject " + DateTime.UtcNow) .WithTemplateId(templateId) .WithVariables(variables) .WithTemplateLanguage(true) .WithTemplateErrorDeliver(true) .WithTemplateErrorReporting(new SendContact(_senderEmail)) .Build(); // act var response = await _client.SendTransactionalEmailAsync(email); // assert Assert.AreEqual(1, response.Messages.Length); var message = response.Messages[0]; Assert.AreEqual("success", message.Status); Assert.AreEqual(_senderEmail, message.To.Single().Email); }
public async Task <bool> SendToken(MailRequest mailRequest) { try { MailjetClient client = new MailjetClient( _mailSettings.MJ_APIKEY_PUBLIC, _mailSettings.MJ_APIKEY_PRIVATE); MailjetRequest request = new MailjetRequest { Resource = Send.Resource, }; var email = new TransactionalEmailBuilder() .WithFrom(new SendContact(_mailSettings.Mail)) .WithSubject(mailRequest.Subject) .WithHtmlPart(mailRequest.Body) .WithTo(new SendContact(mailRequest.ToEmail)) .Build(); var response = await client.SendTransactionalEmailAsync(email); Console.WriteLine(response); if (response.Messages.Length != 1) { throw new Exception(); } } catch (Exception e) { Console.WriteLine(e.Message); return(false); } return(true); }