Exemplo n.º 1
0
        public void SendRequestToTeacher(string senderName, string receiverEmail, string link)
        {
            var htmlMessage = CreateMessageForTeacher(senderName, link);
            var message     = CreatePostMarkMessage(receiverEmail, htmlMessage);

            _postmarkClient.SendMessage(message);
        }
Exemplo n.º 2
0
        //[Ignore("This test sends a real email.")]
        public void Can_send_message_with_token_and_signature_and_headers_and_timeout()
        {
            var postmark = new PostmarkClient(_serverToken, 10);

            var email = new PostmarkMessage
            {
                To       = _to,
                From     = _from, // This must be a verified sender signature
                Subject  = Subject,
                TextBody = TextBody,
                HtmlBody = HtmlBody
            };

            email.Headers.Add("X-Header-Test-1", "This is a header value");
            email.Headers.Add("X-Header-Test-2", "This is another header value");

            var response = postmark.SendMessage(email);

            Assert.IsNotNull(response);
            Assert.IsNotNullOrEmpty(response.Message);
            Assert.IsTrue(response.Status == PostmarkStatus.Success);
            Assert.AreNotEqual(default(DateTime), response.SubmittedAt, "Missing submitted time value.");

            Console.WriteLine("Postmark -> {0}", response.Message);
        }
Exemplo n.º 3
0
        public bool SendEmail(string from, string replyTo, string subject, string body, string to)
        {
            try
            {
                const string postmarkApiKey = "30ddd0b0-0b9a-432e-a892-3c8739aabf0c";

                var message = new PostmarkMessage
                {
                    From     = from.Trim(),
                    To       = to.Trim(),
                    Subject  = subject,
                    HtmlBody = body,
                    TextBody = body,
                    ReplyTo  = replyTo ?? from
                };

                var client = new PostmarkClient(postmarkApiKey.Trim());

                var response = client.SendMessage(message);
            }
            catch (Exception)
            {
                return(false);
            }
            return(true);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Send Email is a method for sending an email
        /// This is how the app integrates with Postmark API to send a message from teh send notification page
        /// It shows a bootstrap modal for either fails and success.
        /// </summary>
        public bool SendEmail()
        {
            // Send an email asynchronously:
            var message = new PostmarkMessage()
            {
                To         = "*****@*****.**",
                From       = "*****@*****.**",
                TrackOpens = true,
                Subject    = "A complex email",
                TextBody   = "Plain Text Body",
                HtmlBody   = "<html><body><p>A new notification has arrived.</p></body></html>",
                Tag        = "New Year's Email Campaign",
                Headers    = new HeaderCollection
                {
                    { "X-CUSTOM-HEADER", "Header content" }
                }
            };

            //var imageContent = File.ReadAllBytes("test.jpg");
            //message.AddAttachment(imageContent, "test.jpg", "image/jpg", "cid:embed_name.jpg");

            PostmarkClient   client   = new PostmarkClient("efc7197a-4c0d-4f4b-92f7-43c612ed74b1");
            PostmarkResponse response = client.SendMessage(message);


            if (response.Status != PostmarkStatus.Success)
            {
                return(false);
            }
            else
            {
                return(true);
            }
        }
Exemplo n.º 5
0
        public bool Send(EmailMessage message)
        {
            message.DeliveryAttempts++;
            var pm       = CreatePostmarkMessage(message);
            var response = _client.SendMessage(pm);

            message.Delivered = response.Status == PostmarkStatus.Success;
            if (message.Delivered)
            {
                message.DeliveredAt = DateTime.UtcNow;
            }
            return(message.Delivered);
        }
Exemplo n.º 6
0
        public void Can_send_message_with_token_and_signature_and_invalid_recipient_and_throw_validation_exception()
        {
            var postmark = new PostmarkClient(_serverToken);

            var email = new PostmarkMessage
            {
                To       = "earth",
                From     = _from,
                Subject  = Subject,
                TextBody = TextBody
            };

            postmark.SendMessage(email);
        }
Exemplo n.º 7
0
        public void SendEmail(string from, string to, string subject, string bodyText)
        {
            var message = new PostmarkMessage
            {
                From     = from,
                To       = to,
                Subject  = subject,
                TextBody = bodyText,
                ReplyTo  = "*****@*****.**"
            };

            var client   = new PostmarkClient(_apiKey);
            var response = client.SendMessage(message);
        }
        public void Can_send_message_without_signature_and_receive_422()
        {
            var postmark = new PostmarkClient(_serverToken);

            var email = new PostmarkMessage
            {
                To       = InvalidRecipient,
                From     = InvalidRecipient, // This must not be a verified sender signature
                Subject  = Subject,
                TextBody = TextBody
            };

            var response = postmark.SendMessage(email);

            Assert.IsNotNull(response);
            Assert.IsNotNullOrEmpty(response.Message);
            Assert.IsTrue(response.Status == PostmarkStatus.UserError);
        }
Exemplo n.º 9
0
        public void Can_send_message_without_token_and_receive_401()
        {
            var postmark = new PostmarkClient("");

            var email = new PostmarkMessage
            {
                To       = InvalidRecipient,
                From     = InvalidRecipient,
                Subject  = Subject,
                TextBody = TextBody
            };

            var response = postmark.SendMessage(email);

            Assert.IsNotNull(response);
            Assert.IsNotNullOrEmpty(response.Message);
            Assert.IsTrue(response.Status == PostmarkStatus.UserError);

            Console.WriteLine("Postmark -> {0}", response.Message);
        }
Exemplo n.º 10
0
        public void Can_send_message_with_token_and_signature_and_name_based_email()
        {
            var postmark = new PostmarkClient(_serverToken);

            var email = new PostmarkMessage
            {
                To       = _to,
                From     = string.Format("The Team <{0}>", _from), // This must be a verified sender signature
                Subject  = Subject,
                TextBody = TextBody
            };

            var response = postmark.SendMessage(email);

            Assert.IsNotNull(response);
            Assert.IsNotNullOrEmpty(response.Message);
            Assert.IsTrue(response.Status == PostmarkStatus.Success);

            Console.WriteLine("Postmark -> " + response.Message);
        }
Exemplo n.º 11
0
        //[Ignore("This test sends a real email.")]
        public void Can_send_message_with_token_and_signature()
        {
            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
            };

            var response = postmark.SendMessage(email);

            Assert.IsNotNull(response);
            Assert.IsNotNullOrEmpty(response.Message);
            Assert.IsTrue(response.Status == PostmarkStatus.Success);

            Console.WriteLine("Postmark -> {0}", response.Message);
        }
Exemplo n.º 12
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);
        }
Exemplo n.º 13
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);
            }
        }
Exemplo n.º 14
0
        public void Can_send_message_with_cc_and_bcc()
        {
            var postmark = new PostmarkClient("POSTMARK_API_TEST");

            var email = new PostmarkMessage
            {
                To       = InvalidRecipient,
                Cc       = "*****@*****.**",
                Bcc      = "*****@*****.**",
                From     = InvalidRecipient,
                Subject  = Subject,
                TextBody = TextBody
            };

            var response = postmark.SendMessage(email);

            Assert.IsNotNull(response);
            Assert.IsNotNullOrEmpty(response.Message);
            Assert.IsTrue(response.Status == PostmarkStatus.Success);

            Console.WriteLine("Postmark -> " + response.Message);
        }
Exemplo n.º 15
0
        /// <summary>
        /// btnContactSend_Click is a click event from the send button
        /// This is how the app integrates with Postmark API to send a message from teh contact us page
        /// It shows a bootstrap modal for either fails and success.
        /// </summary>
        protected void btnContactSend_Click(object sender, EventArgs e)
        {
            var message = new PostmarkMessage()
            {
                To         = "*****@*****.**",
                From       = "*****@*****.**",
                TrackOpens = true,
                Subject    = txtContactSub.Text,
                TextBody   = "Plain Text Body",
                HtmlBody   = txtContactMsg.Text,
                Tag        = "New Year's Email Campaign",
                Headers    = new HeaderCollection
                {
                    { "X-CUSTOM-HEADER", "Header content" }
                }
            };



            PostmarkClient   client   = new PostmarkClient("efc7197a-4c0d-4f4b-92f7-43c612ed74b1");
            PostmarkResponse response = client.SendMessage(message);


            if (response.Status != PostmarkStatus.Success)
            {
                lblModalTitle.Text = "ERROR!";
                lblModalBody.Text  = "Message has not been sent. Please try again";
                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "myModal", "$('#myModal').modal();", true);
                upModal.Update();
            }
            else
            {
                lblModalTitle.Text = "CONGRATULATIONS!";
                lblModalBody.Text  = "Message has been sent.";
                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "myModal", "$('#myModal').modal();", true);
                upModal.Update();
            }
        }
Exemplo n.º 16
0
        public void Send(Email email)
        {
            var mail = CreateMailMessageFromEmail(email);

            try
            {
                if (SystemBehaviorConfig.OutboundEmailType == OutboundEmailTypes.Postmark)
                {
                    if (mail.From != null && mail.From.Address.Contains("resgrid.com") && mail.From.Address != "*****@*****.**" &&
                        mail.From.Address != "*****@*****.**" && mail.From.Address != "*****@*****.**" &&
                        email.To.First() != "*****@*****.**" &&
                        email.To.First() != "*****@*****.**" && email.To.First() != "*****@*****.**")
                    {
                        var to = new StringBuilder();
                        foreach (var t in email.To)
                        {
                            if (to.Length == 0)
                            {
                                to.Append(t);
                            }
                            else
                            {
                                to.Append("," + t);
                            }
                        }

                        //var message = new PostmarkMessage(email.From, to.ToString(), email.Subject, email.HtmlBody);
                        var message   = new PostmarkMessage("", to.ToString(), email.Subject, email.HtmlBody);
                        var newClient = new PostmarkClient(Config.OutboundEmailServerConfig.PostmarkApiKey);

                        message.From = null;
                        //var response = newClient.SendMessage(message);

                        //var response = newClient.SendMessageAsync(email.From, to.ToString(), email.Subject, email.HtmlBody).Result;
                        var response = newClient.SendMessage(email.From, to.ToString(), email.Subject, email.HtmlBody);

                        if (response.ErrorCode != 200 && response.ErrorCode != 406 && response.Message != "OK" &&
                            !response.Message.Contains("You tried to send to a recipient that has been marked as inactive"))
                        {
                            Logging.LogError(string.Format("Error from PostmarkEmailSender->Send: {3} {0} FromEmail:{1} ToEmail:{2}",
                                                           response.Message, mail.From.Address, mail.To.First().Address, response.ErrorCode));
                        }
                    }
                    else
                    {
                        try
                        {
                            using (var smtpClient = new SmtpClient
                            {
                                DeliveryMethod = SmtpDeliveryMethod.Network,
                                Host = Config.OutboundEmailServerConfig.Host
                            })
                            {
                                if (!String.IsNullOrWhiteSpace(OutboundEmailServerConfig.UserName) && !String.IsNullOrWhiteSpace(OutboundEmailServerConfig.Password))
                                {
                                    smtpClient.Credentials = new System.Net.NetworkCredential(OutboundEmailServerConfig.UserName, OutboundEmailServerConfig.Password);
                                }

                                smtpClient.Send(mail);
                            }
                        }
                        catch (Exception ex)
                        {
                            Logging.LogException(ex);
                        }
                    }
                }
                else
                {
                    try
                    {
                        using (var smtpClient = new SmtpClient
                        {
                            DeliveryMethod = SmtpDeliveryMethod.Network,
                            Host = OutboundEmailServerConfig.Host
                        })
                        {
                            if (!String.IsNullOrWhiteSpace(OutboundEmailServerConfig.UserName) && !String.IsNullOrWhiteSpace(OutboundEmailServerConfig.Password))
                            {
                                smtpClient.Credentials = new System.Net.NetworkCredential(OutboundEmailServerConfig.UserName, OutboundEmailServerConfig.Password);
                            }

                            smtpClient.Send(mail);
                        }
                    }
                    catch (Exception ex)
                    {
                        Logging.LogException(ex);
                    }
                }
            }
            catch (PostmarkValidationException) { }
            catch (Exception)
            {
                try
                {
                    using (var smtpClient = new SmtpClient
                    {
                        DeliveryMethod = SmtpDeliveryMethod.Network,
                        Host = Config.OutboundEmailServerConfig.Host
                    })
                    {
                        smtpClient.Credentials = new System.Net.NetworkCredential(Config.OutboundEmailServerConfig.UserName, Config.OutboundEmailServerConfig.Password);
                        smtpClient.Send(mail);
                    }
                }
                catch (Exception ex)
                {
                    if (!ex.ToString().Contains("You tried to send to a recipient that has been marked as inactive."))
                    {
                        Logging.LogException(ex);
                    }
                }
            }
        }