Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 3
0
        /// <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);
        }
Ejemplo n.º 4
0
        //[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);
        }
Ejemplo n.º 5
0
        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);
            }
        }
Ejemplo n.º 6
0
        //[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);
        }