Beispiel #1
0
        public MessageDeliveryStatus SendMessageInstantly(SMS messageItem)
        {
            int status;

            Repository.MessagingRepository repository = new Repository.MessagingRepository();

            Application application = repository.GetApplication(messageItem.ApplicationName);

            if (application != null)
            {
                SMSQueueItem smsQueueItem = new SMSQueueItem();

                smsQueueItem.ApplicationID = application.Id;

                var smsConfiguration = repository.GetSMSConfiguration(application.Id);

                if (smsConfiguration != null)
                {
                    TwilioClient.Init(smsConfiguration.AccountSid, smsConfiguration.AuthToken);

                    var message = MessageResource.Create(
                        to: new PhoneNumber(messageItem.ToNumber),
                        from: new PhoneNumber(messageItem.FromNumber),
                        body: messageItem.Message
                        );

                    smsQueueItem.DeliveryResponse = JsonConvert.SerializeObject(messageItem);

                    if (message.Status == MessageResource.StatusEnum.Failed || message.Status == MessageResource.StatusEnum.Undelivered)
                    {
                        smsQueueItem.StatusID = (int)MessageDeliveryStatus.Failed;
                        status = (int)MessageDeliveryStatus.Failed;
                    }
                    else
                    {
                        smsQueueItem.StatusID     = (int)MessageDeliveryStatus.Delivered;
                        smsQueueItem.DeliveryDate = message.DateSent.HasValue ? message.DateSent : message.DateUpdated;
                        status = (int)MessageDeliveryStatus.Delivered;
                    }

                    smsQueueItem.CreatedDate      = DateTime.Now;
                    smsQueueItem.SMSObject        = Utility.ObjectToByteArray(messageItem.Message);
                    smsQueueItem.NumberOfAttempts = -1;

                    repository.AddSMSToQueue(smsQueueItem);
                }
                else
                {
                    status = (int)MessageDeliveryStatus.Failed;
                }
            }
            else
            {
                status = (int)MessageDeliveryStatus.Failed;
            }
            return((MessageDeliveryStatus)status);
        }
Beispiel #2
0
        public void AddMessageToQueue(SMS messageItem)
        {
            Repository.MessagingRepository repository = new Repository.MessagingRepository();
            Application application = repository.GetApplication(messageItem.ApplicationName);

            if (application != null)
            {
                SMSQueueItem smsQueueItem = new SMSQueueItem();

                smsQueueItem.ApplicationID = application.Id;
                smsQueueItem.StatusID      = (int)MessageDeliveryStatus.Scheduled;
                smsQueueItem.CreatedDate   = DateTime.Now;
                smsQueueItem.SMSObject     = Utility.ObjectToByteArray(messageItem.Message);

                repository.AddSMSToQueue(smsQueueItem);
            }
        }
Beispiel #3
0
        public MessageDeliveryStatus SendMessage(SMSQueueItem smsqueueitem)
        {
            int status;

            Repository.MessagingRepository repository = new Repository.MessagingRepository();

            var smsConfiguration = repository.GetSMSConfiguration(smsqueueitem.ApplicationID);

            if (smsConfiguration != null)
            {
                TwilioClient.Init(smsConfiguration.AccountSid, smsConfiguration.AuthToken);

                SMS sms = (SMS)Utility.ByteArrayToObject(smsqueueitem.SMSObject);

                var message = MessageResource.Create(
                    to: new PhoneNumber(sms.ToNumber),
                    from: new PhoneNumber(sms.FromNumber),
                    body: sms.Message
                    );

                smsqueueitem.DeliveryResponse  = JsonConvert.SerializeObject(message);
                smsqueueitem.NumberOfAttempts += 1;

                if (message.Status == MessageResource.StatusEnum.Failed || message.Status == MessageResource.StatusEnum.Undelivered)
                {
                    status = (int)MessageDeliveryStatus.Failed;
                    if (smsConfiguration.MaxNumberOfRetry >= smsqueueitem.NumberOfAttempts)
                    {
                        smsqueueitem.StatusID = (int)MessageDeliveryStatus.Failed;
                    }
                }
                else
                {
                    status = (int)MessageDeliveryStatus.Delivered;
                    smsqueueitem.StatusID     = (int)MessageDeliveryStatus.Delivered;
                    smsqueueitem.DeliveryDate = message.DateSent.HasValue ? message.DateSent : message.DateUpdated;
                }
                repository.UpdateSMSToQueue(smsqueueitem);
            }
            else
            {
                status = (int)MessageDeliveryStatus.Failed;
            }
            return((MessageDeliveryStatus)status);
        }
Beispiel #4
0
        public void AddMessageToQueue(EmailMessage messageitem)
        {
            Repository.MessagingRepository repository = new Repository.MessagingRepository();
            Application application = repository.GetApplication(messageitem.ApplicationName);

            if (application != null)
            {
                EMailQueueItem emailQueueItem = new EMailQueueItem();

                emailQueueItem.ApplicationID = application.Id;

                emailQueueItem.StatusID    = (int)MessageDeliveryStatus.Scheduled;
                emailQueueItem.CreatedDate = DateTime.Now;
                emailQueueItem.EmailObject = Utility.ObjectToByteArray(messageitem);

                repository.AddEmailToQueue(emailQueueItem);
            }
        }
Beispiel #5
0
 public IEnumerable <SMSQueueItem> GetPendingMessages()
 {
     Repository.MessagingRepository repository = new Repository.MessagingRepository();
     return(repository.GetPendingSMSFromQueue().ToList());
 }
Beispiel #6
0
        public MessageDeliveryStatus SendMessageInstantly(EmailMessage messageitem)
        {
            int status;

            Repository.MessagingRepository repository = new Repository.MessagingRepository();
            Application application = repository.GetApplication(messageitem.ApplicationName);

            if (application != null)
            {
                var emailConfiguration = repository.GetEmailConfiguration(application.Id);

                if (emailConfiguration != null)
                {
                    using (var mail = new System.Net.Mail.MailMessage(
                               messageitem.FromEmail,
                               messageitem.ToEmail,
                               messageitem.EMailSubject,
                               messageitem.EMailBody))
                    {
                        if (messageitem.CcEmail != null || messageitem.CcEmail != string.Empty)
                        {
                            mail.CC.Add(messageitem.CcEmail);
                        }

                        if (messageitem.BccEmail != null || messageitem.BccEmail != string.Empty)
                        {
                            mail.Bcc.Add(messageitem.BccEmail);
                        }
                        mail.IsBodyHtml = true;

                        EMailQueueItem emailQueueItem = new EMailQueueItem();

                        emailQueueItem.ApplicationID    = application.Id;
                        emailQueueItem.CreatedDate      = DateTime.Now;
                        emailQueueItem.EmailObject      = Utility.ObjectToByteArray(messageitem);
                        emailQueueItem.NumberOfAttempts = -1;

                        try
                        {
                            using (var client = new SmtpClient(emailConfiguration.SMTPClientHostName, emailConfiguration.SmtpClientPortNumber))
                            {
                                client.Credentials = new NetworkCredential(emailConfiguration.SMTPClientUserName, emailConfiguration.SMTPClientPassword);
                                client.EnableSsl   = emailConfiguration.IsSSLEnabled;

                                client.Send(mail);

                                emailQueueItem.StatusID         = (int)MessageDeliveryStatus.Delivered;
                                emailQueueItem.DeliveryResponse = "Email delivered successfully";
                                emailQueueItem.DeliveryDate     = DateTime.Now;
                                status = (int)MessageDeliveryStatus.Delivered;
                            }
                        }
                        catch (SmtpFailedRecipientsException ex)
                        {
                            emailQueueItem.DeliveryResponse = JsonConvert.SerializeObject(ex);
                            emailQueueItem.StatusID         = (int)MessageDeliveryStatus.Failed;
                            status = (int)MessageDeliveryStatus.Failed;
                        }
                        finally
                        {
                            repository.AddEmailToQueue(emailQueueItem);
                        }
                    }
                }
                else
                {
                    status = (int)MessageDeliveryStatus.Failed;
                }
            }
            else
            {
                status = (int)MessageDeliveryStatus.Failed;
            }

            return((MessageDeliveryStatus)status);
        }
Beispiel #7
0
        public MessageDeliveryStatus SendMessage(EMailQueueItem emailqueueitem)
        {
            Repository.MessagingRepository repository = new Repository.MessagingRepository();
            int status;
            var emailConfiguration = repository.GetEmailConfiguration(emailqueueitem.ApplicationID);

            if (emailConfiguration != null)
            {
                EmailMessage emailMessage = (EmailMessage)Utility.ByteArrayToObject(emailqueueitem.EmailObject);

                var message = (EmailMessage)Utility.ByteArrayToObject(emailqueueitem.EmailObject);

                using (var mail = new System.Net.Mail.MailMessage(message.FromEmail, message.ToEmail, message.EMailSubject, message.EMailBody))
                {
                    if (message.CcEmail != null || message.CcEmail != string.Empty)
                    {
                        mail.CC.Add(message.CcEmail);
                    }

                    if (message.BccEmail != null || message.BccEmail != string.Empty)
                    {
                        mail.Bcc.Add(message.BccEmail);
                    }
                    mail.IsBodyHtml = true;

                    try
                    {
                        using (var client = new SmtpClient(emailConfiguration.SMTPClientHostName, emailConfiguration.SmtpClientPortNumber))
                        {
                            emailqueueitem.NumberOfAttempts += 1;

                            client.Credentials = new NetworkCredential(emailConfiguration.SMTPClientUserName, emailConfiguration.SMTPClientPassword);
                            client.EnableSsl   = emailConfiguration.IsSSLEnabled;

                            client.Send(mail);
                            status = (int)MessageDeliveryStatus.Delivered;
                            emailqueueitem.StatusID         = (int)MessageDeliveryStatus.Delivered;
                            emailqueueitem.DeliveryResponse = "Email delivered successfully";
                            emailqueueitem.DeliveryDate     = DateTime.Now;
                        }
                    }
                    catch (SmtpFailedRecipientsException ex)
                    {
                        emailqueueitem.DeliveryResponse = JsonConvert.SerializeObject(ex);

                        if (emailConfiguration.MaxNumberOfRetry >= emailqueueitem.NumberOfAttempts)
                        {
                            emailqueueitem.StatusID = (int)MessageDeliveryStatus.Failed;
                        }
                        status = (int)MessageDeliveryStatus.Failed;
                    }
                    finally
                    {
                        repository.UpdateEmailToQueue(emailqueueitem);
                    }
                }
            }
            else
            {
                status = (int)MessageDeliveryStatus.Failed;
            }
            return((MessageDeliveryStatus)status);
        }