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); }
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); }
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); } }
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); } } }
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); } }