Example #1
0
        private MailMessage PopulateMailObject(EmailQueueViewModel viewModel, SmtpSection smtpSection)
        {
            MailMessage eMailMessage = new MailMessage();

            eMailMessage.From = new MailAddress(smtpSection.Network.UserName);
            eMailMessage.ReplyToList.Add(smtpSection.Network.UserName);
            eMailMessage.To.Add(viewModel.ToEmailId);
            eMailMessage.Subject    = viewModel.EmailSubject;
            eMailMessage.IsBodyHtml = true;
            eMailMessage.Body       = viewModel.MessageBody;
            eMailMessage.Priority   = MailPriority.High;

            if (!String.IsNullOrEmpty(viewModel.AttachedFiles))
            {
                var files = viewModel.AttachedFiles.Split(',').ToList();

                foreach (string fileName in files)
                {
                    if (!string.IsNullOrEmpty(fileName))
                    {
                        var fileFullPath = AppProperties.BasePhysicalPath + AppConstants.GenerateFileAt + fileName;
                        if (File.Exists(fileFullPath))
                        {
                            var attachmentItem = new Attachment(fileFullPath);
                            eMailMessage.Attachments.Add(attachmentItem);
                        }
                    }
                }
            }

            return(eMailMessage);
        }
Example #2
0
        public EmailQueueViewModel CreateEmailQueueViewModel(string toEmailIds, string attachedFiles = "")
        {
            var viewModel = new EmailQueueViewModel();

            viewModel.fromEmailId   = string.IsNullOrEmpty(FromEmail) ? AppProperties.SmtpMailSettings.From : FromEmail;
            viewModel.ToEmailId     = toEmailIds;
            viewModel.EmailSubject  = Subject;
            viewModel.MessageBody   = RenderHtml();
            viewModel.AttachedFiles = attachedFiles;
            viewModel.UpdatedBy     = AppConstants.SysUserId;
            viewModel.UpdatedOn     = DateTime.Now;
            viewModel.IsActive      = true;

            return(viewModel);
        }
Example #3
0
 private bool SendEmail(EmailQueueViewModel viewModel)
 {
     try
     {
         using (var emailMessage = PopulateMailObject(viewModel, AppProperties.SmtpMailSettings))
         {
             var smtpClient = GetSmtpClient(AppProperties.SmtpMailSettings);
             smtpClient.Send(emailMessage);
         }
         return(true);
     }
     catch (Exception ex)
     {
         NLogLogger.Instance.Log(ex);
         return(false);
     }
 }
Example #4
0
        public void SendEmailAsync(EmailQueueViewModel viewModel, SmtpSection smtpSection)
        {
            try
            {
                var emailMessage = PopulateMailObject(viewModel, smtpSection);

                var smtpClient = GetSmtpClient(smtpSection);

                object userState = viewModel;
                smtpClient.SendCompleted += new SendCompletedEventHandler(SmtpClient_OnCompleted);
                smtpClient.SendAsync(emailMessage, userState);
            }
            catch (Exception ex)
            {
                viewModel.ErrorMessage = ex.Message;
                viewModel.UpdatedOn    = DateTime.Now;
                if (emailQueueService != null)
                {
                    emailQueueService.Save(viewModel);
                }
            }
        }
Example #5
0
        public void SmtpClient_OnCompleted(object sender, AsyncCompletedEventArgs e)
        {
            EmailQueueViewModel viewModel = (EmailQueueViewModel)e.UserState;

            if (e.Cancelled)
            {
                viewModel.ErrorMessage = AppMessages.SEND_EMAIL_CANCEL;
            }
            if (e.Error != null)
            {
                viewModel.ErrorMessage = e.Error.ToString();
            }
            else
            {
                viewModel.ErrorMessage = AppMessages.SEND_EMAIL_SUCCEED;
                viewModel.UpdatedOn    = DateTime.Now;
                viewModel.IsActive     = false;
            }

            if (emailQueueService != null)
            {
                emailQueueService.Save(viewModel);
            }
        }