// POST: api/Email
        public IHttpActionResult Post(EmailRequest emailRequest)
        {
            try
            {
                //Build the request model for the service to send the email
                PigeonRequest  pigeonRequest  = EmailFactory.CreatePigeonRequest(emailRequest);
                PigeonResponse pigeonResponse = _emailProvider.SendAFitPigeon(pigeonRequest);

                if (pigeonResponse.Success)
                {
                    //Create the Api response for the successful post request
                    EmailResponse emailResponse = EmailFactory.CreateEmailResponse(pigeonResponse);

                    //Save to database if the email is sent successfully
                    _emailSavingService = new EmailSavingService(_commonProvider, _databaseRepoProvider,
                                                                 emailRequest, emailResponse);

                    //request = CommonUtility.SerializeObject(emailRequest);
                    //response = CommonUtility.SerializeObject(emailResponse);
                    //var isSaved = databaseStuff.SaveaSomethingAwesome(request, response, 1, 2);

                    return(Ok(emailResponse));
                }
                else
                {
                    return(BadRequest("Response was not a success: " + pigeonResponse.Message));
                }
            }
            catch (Exception ex)
            {
                return(InternalServerError(ex));
            }
        }
예제 #2
0
        public static PigeonRequest CreatePigeonRequest(EmailRequest emailRequest)
        {
            PigeonRequest pigeonRequest = new PigeonRequest();

            pigeonRequest.ClientId     = emailRequest.ClientId;
            pigeonRequest.DateCreated  = emailRequest.DateCreated;
            pigeonRequest.EmailAddress = emailRequest.EmailAddress;
            pigeonRequest.Message      = emailRequest.Message;
            pigeonRequest.Subject      = emailRequest.Subject;

            return(pigeonRequest);
        }
예제 #3
0
        public void TestSendEmailUsingGMailSMTP()
        {
            emailProvider = new AGmailPigeonExpress();

            PigeonRequest request = new PigeonRequest();

            request.ClientId     = "TestClient001";
            request.DateCreated  = DateTime.Now;
            request.EmailAddress = "*****@*****.**";
            request.Message      = "Dude!!! Niject you say???";
            request.Subject      = "INinja";

            var response = emailProvider.SendAFitPigeon(request);

            Assert.IsTrue(response.Success, "Sends an email to a client using Google Gmail SMTP Provider");
        }
        public void TestEmailWithDI()
        {
            notificationSenderDI = new NotificationSenderDI(new AOutlookPigeonExpress());

            PigeonRequest request = new PigeonRequest();

            request.ClientId     = "TestClient001";
            request.DateCreated  = DateTime.Now;
            request.EmailAddress = "*****@*****.**";
            request.Message      = "Dude!!! Niject you say???";
            request.Subject      = "INinja";

            var response = notificationSenderDI.SendEmail(request);

            Assert.IsTrue(response.Success, "Send an email using outlook email provider, manual dependency injection");
        }
예제 #5
0
        public PigeonResponse SendAFitPigeon(PigeonRequest pigeonRequest)
        {
            PigeonResponse pigeonResponse = new PigeonResponse();

            try
            {
                var emailSettings = Settings.SurrenderEmailSettings();

                NetworkCredential networkCredential = new NetworkCredential();
                networkCredential.UserName = emailSettings.Username;
                networkCredential.Password = emailSettings.Password;

                SmtpClient smtpClient = new SmtpClient();
                smtpClient.Host                  = emailSettings.Host;
                smtpClient.Port                  = int.Parse(emailSettings.Port);
                smtpClient.EnableSsl             = true;
                smtpClient.UseDefaultCredentials = true;
                smtpClient.Credentials           = networkCredential;
                ServicePointManager.ServerCertificateValidationCallback = delegate(object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return(true); };

                MailMessage mailMessage = new MailMessage();
                MailAddress mailAddress = new MailAddress(emailSettings.MailAddress);

                mailMessage.From = mailAddress;
                mailMessage.To.Add(pigeonRequest.EmailAddress);
                mailMessage.Subject    = pigeonRequest.Subject;
                mailMessage.Body       = pigeonRequest.Message;
                mailMessage.IsBodyHtml = true;

                smtpClient.Send(mailMessage);

                pigeonResponse.Success           = true;
                pigeonResponse.Message           = "Email submitted to email provider successfully.";
                pigeonResponse.SubmittedDateTime = DateTime.Now;
                pigeonResponse.To   = pigeonRequest.EmailAddress;
                pigeonResponse.From = mailAddress.Address;
                pigeonResponse.Body = pigeonRequest.Message;
            }
            catch (Exception ex)
            {
                pigeonResponse.Success           = false;
                pigeonResponse.Message           = "An error has occurred: " + ex.Message;
                pigeonResponse.SubmittedDateTime = null;
            }

            return(pigeonResponse);
        }
 public PigeonResponse SendEmail(PigeonRequest request)
 {
     return(emailProvider.SendAFitPigeon(request));
 }
예제 #7
0
 public PigeonResponse SendAFitPigeon(PigeonRequest pigeonRequest)
 {
     throw new NotImplementedException();
 }