public async void SendEmail(string to) { var mailHeader = new MailHeader("X-CUSTOM-HEADER", "Header content"); var headers = new HeaderCollection(); headers.Add(mailHeader); var message = new PostmarkMessage() { To = to, From = "*****@*****.**", TrackOpens = true, Subject = "A complex email", TextBody = "Plain Text Body", HtmlBody = "<html><body><img src=\"cid:embed_name.jpg\"/></body></html>", Tag = "New Year's Email Campaign", Headers = headers }; var imageContent = File.ReadAllBytes("test.jpg"); message.AddAttachment(imageContent, "test.jpg", "image/jpg", "cid:embed_name.jpg"); var client = new PostmarkClient("6cce5c93-a59e-4f32-b37d-c71525956b6b"); var sendResult = await client.SendMessageAsync(message); if (sendResult.Status == PostmarkStatus.Success) /* Handle success */ } {
public static PostmarkMessage ToPostmarkMessage(this MailMessage mailMessage) { var postmarkMessage = new PostmarkMessage { From = mailMessage.From.Address, ReplyTo = mailMessage.ReplyToList.FirstOrDefault()?.Address, To = string.Join(",", mailMessage.To.Select(to => to.Address)), Cc = string.Join(",", mailMessage.CC.Select(cc => cc.Address)), Bcc = string.Join(",", mailMessage.Bcc.Select(bcc => bcc.Address)), Subject = mailMessage.Subject, HtmlBody = mailMessage.IsBodyHtml ? mailMessage.Body : null, TextBody = !mailMessage.IsBodyHtml ? mailMessage.Body : null }; foreach (var mailAttachment in mailMessage.Attachments) { postmarkMessage.AddAttachment(mailAttachment.ContentStream, mailAttachment.Name, mailAttachment.ContentType.MediaType, mailAttachment.ContentId); } return(postmarkMessage); }
/// <summary> /// Send the mail to the list of users based on the defined template /// </summary> /// <param name="emailTolist"></param> /// <param name="subject"></param> /// <param name="message"></param> /// <param name="templateFileName"></param> /// <param name="emailCcList"></param> /// <param name="emailBccList"></param> /// <returns></returns> public void Send(List <string> emailTolist, string subject, List <string> changeObject, Dictionary <string, string> changeValue, string templateFileName, List <string> emailCcList = null, List <string> emailBccList = null) { SetSupporInfo(changeValue); GetEmailSetting(); // Example asynchronous request PostmarkMessage message = new PostmarkMessage() { From = senderEmail, Cc = string.IsNullOrEmpty(_appSettings.EmailSettings.CCEmail) ? null : _appSettings.EmailSettings.CCEmail }; foreach (var email in emailTolist) { message.To = email; } if (emailCcList != null && emailCcList.Count > 0) { foreach (var emailCc in emailTolist) { message.Cc = emailCc; } } if (emailBccList != null && emailBccList.Count > 0) { foreach (var emailBcc in emailBccList) { message.Cc = emailBcc; } } message.Subject = subject; string emailBody = BodyTemplate.CreateMailBody(changeObject, changeValue, templateFileName, senderName, NotificationType.Email); message.HtmlBody = emailBody; //File Attachment for Images in Mail string filePath = Directory.GetCurrentDirectory() + "\\wwwroot\\TemplateImages\\"; List <string> files = Directory.GetFiles(filePath).ToList(); foreach (string file in files) { var imageContent = File.ReadAllBytes(file); message.AddAttachment(imageContent, file.Replace(filePath, "").ToLower(), "image/png", "cid:" + file.Replace(filePath, "").ToLower()); } var client = new PostmarkClient(postMarkKey); var sendResult = client.SendMessageAsync(message); }
//[Ignore("This test sends a real email.")] public void Can_send_message_with_file_attachment() { var postmark = new PostmarkClient(_serverToken); var email = new PostmarkMessage { To = _to, From = _from, // This must be a verified sender signature Subject = Subject, TextBody = TextBody, HtmlBody = HtmlBody }; email.AddAttachment("logo.png", "image/png"); var response = postmark.SendMessage(email); Assert.IsNotNull(response); Assert.IsNotNullOrEmpty(response.Message); Assert.IsTrue(response.Status == PostmarkStatus.Success); }
public void SendByApi() { PostmarkMessage message = new PostmarkMessage() { From = this.From , To = this.To , Cc = this.Cc , Bcc = this.Bcc , Subject = this.Subject , ReplyTo = this.ReplyTo }; if (this.IsBodyHtml) { message.HtmlBody = this.Body; } else { message.TextBody = this.Body; } if (this.Attachments != null && this.Attachments.Count > 0) { foreach (var attachment in this.Attachments) { var bytes = new Byte[attachment.ContentStream.Length]; attachment.ContentStream.Read(bytes, 0, bytes.Length); message.AddAttachment(bytes, attachment.ContentType.ToString(), attachment.Name); } } //Created just to get user name which will be used as ApiKey SmtpClient sc = new SmtpClient(); PostmarkClient client = new PostmarkClient((sc.Credentials as NetworkCredential).UserName); var response = client.SendMessage(message); if (response.Status != PostmarkStatus.Success) { throw new System.Net.Mail.SmtpException(response.Message); } }
//[Ignore("This test sends a real email.")] public void Can_send_message_with_zipfile_attachment() { var postmark = new PostmarkClient(_serverToken); var email = new PostmarkMessage { To = _to, From = _from, // This must be a verified sender signature Subject = Subject, TextBody = TextBody, HtmlBody = HtmlBody }; email.AddAttachment("zipfile.zip", "application/zip"); var response = postmark.SendMessage(email); Assert.IsNotNull(response); Assert.IsNotNullOrEmpty(response.Message); Assert.IsTrue(response.Status == PostmarkStatus.Success); Console.WriteLine("Postmark -> {0}", response.Message); }