예제 #1
0
        public MessagingMessageModel GetMailMessage(Guid messageId)
        {
            MessagingMessage      message    = this.UnitOfWork.MessagingMessageRepository.GetById(messageId);
            MessagingMessageModel messageDto = AutoMapper.Mapper.Map <MessagingMessage, MessagingMessageModel>(message);

            return(messageDto);
        }
예제 #2
0
        public MessagingMessageModel GetMailMessage(Guid templateId, Dictionary <string, string> values)
        {
            MessagingTemplateContent messageTemplate = this.GetAvailableMessageTemplate(templateId);

            if (messageTemplate == null)
            {
                throw new InvalidOperationException(String.Format("Invalid Email Template: {0}", templateId));
            }

            MessagingMessage message = new MessagingMessage()
            {
                Id = Guid.NewGuid(),
                MessagingTemplateContentId = messageTemplate.Id,
                MessagingSubject           = databindingHelper.bind(messageTemplate.MessagingSubject, values),
                MessagingFromName          = databindingHelper.bind(messageTemplate.MessagingFromName, values),
                MessagingFromEmailAddress  = databindingHelper.bind(messageTemplate.MessagingFromEmailAddress, values),
                MessagingTo      = databindingHelper.bind(messageTemplate.MessagingTo, values),
                MessagingCc      = databindingHelper.bind(messageTemplate.MessagingCc, values),
                MessagingBcc     = databindingHelper.bind(messageTemplate.MessagingBcc, values),
                MessagingContent = databindingHelper.bind(messageTemplate.MessagingContent, values),
                Tags             = messageTemplate.Tags,
                IsSent           = false,
                IsMarkedAsRead   = false,
                SentDate         = null,
                CreatedDate      = DateTime.UtcNow
            };

            this.UnitOfWork.MessagingMessageRepository.Insert(message);
            this.UnitOfWork.SaveChanges();

            MessagingMessageModel model = Mapper.Map <MessagingMessage, MessagingMessageModel>(message);

            return(model);
        }
예제 #3
0
        public async Task SendAsync(MessagingMessageModel mailMessage)
        {
            Logger.Debug(String.Format("{0} is sending email *{1}* to *{2}*", Sender.ToString(), mailMessage.MessagingSubject, mailMessage.MessagingTo));

            await Sender.SendAsync(mailMessage);

            this.UpdateMessagingMessage(mailMessage);

            Logger.Debug(String.Format("{0} sent email *{1}* to *{2}*", Sender.ToString(), mailMessage.MessagingSubject, mailMessage.MessagingTo));
        }
예제 #4
0
        public async Task SendAsync(Guid templateId, Dictionary <string, string> values)
        {
            MessagingMessageModel message = this.GetEmailMessage(templateId, values);

            Logger.Debug(String.Format("Sending Email *{0}* to *{1}*", message.MessagingSubject, message.MessagingTo));

            await this.SendAsync(message);

            Logger.Debug(String.Format("Email *{0}* sent to *{1}*", message.MessagingSubject, message.MessagingTo));
        }
예제 #5
0
        private void UpdateMessagingMessage(MessagingMessageModel message)
        {
            MessagingMessage msg = new MessagingMessage()
            {
                Id = message.Id,
                EmailDeliveryProvider = Sender.ToString(),
                IsSent   = true,
                SentDate = DateTime.UtcNow
            };

            this.UnitOfWork.MessagingMessageRepository.Update(msg, x => x.IsSent, x => x.SentDate, x => x.EmailDeliveryProvider);
            this.UnitOfWork.SaveChanges();
        }
예제 #6
0
        public async Task SendAsync(MessagingMessageModel mailMessage)
        {
            if (mailMessage == null)
            {
                throw new ArgumentNullException("mailMessage");
            }

            MailMessage msg = new MailMessage(mailMessage.MessagingFromEmailAddress, mailMessage.MessagingTo, mailMessage.MessagingSubject, mailMessage.MessagingContent);

            string providerServerUrl  = System.Configuration.ConfigurationManager.AppSettings["gmail:Host"];
            int    providerServerPort = int.Parse(System.Configuration.ConfigurationManager.AppSettings["gmail:Port"]);
            string displayName        = System.Configuration.ConfigurationManager.AppSettings["gmail:DisplayName"];
            string username           = System.Configuration.ConfigurationManager.AppSettings["gmail:CredentialUserName"];
            string passworkHash       = System.Configuration.ConfigurationManager.AppSettings["gmail:CredentialPasswordHash"];
            string securityStamp      = System.Configuration.ConfigurationManager.AppSettings["gmail:SecurityStamp"];
            string password           = Commons.Crypto.DecryptStringAES(passworkHash, securityStamp);
            bool   enableSsl          = bool.Parse(System.Configuration.ConfigurationManager.AppSettings["gmail:EnableSsl"]);

            Logger.Info(String.Format("{0} ({1}:{2}) is using {3} to send email.", this.ToString(), providerServerUrl, providerServerPort, username));

            if (msg.From == null)
            {
                msg.From = new MailAddress(username, displayName);
            }

            using (var smtpClient = new SmtpClient(providerServerUrl))
            {
                smtpClient.Credentials    = new System.Net.NetworkCredential(username, password);
                smtpClient.EnableSsl      = enableSsl;
                smtpClient.Port           = providerServerPort;
                smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;

                //smtpClient.SendCompleted += SmtpClientSendCompleted;
                //var userState = msg;
                //Task t = new Task(() => smtpClient.SendAsync(msg, userState));

                smtpClient.Send(msg);

                MailAddress mail = msg.To.FirstOrDefault();
                if (mail != null)
                {
                    Logger.Info(String.Format("Email Send: {0}", mail.Address));
                }

                //await t;
            }
        }
예제 #7
0
        public MessagingMessageModel GetEmailMessage(Guid templateId, Dictionary <string, string> values)
        {
            MessagingMessageModel message = this.MessagingMessageService.GetMailMessage(templateId, values);

            return(message);
        }