void SaveLog(NotificationEMailListBo eMailBo, Enums.EMailLogEvents emailEventId, long?logExceptionId) { NotificationEMailBusiness eMailBusiness = new NotificationEMailBusiness(); eMailBusiness.SaveLog(new NotificationEMailLogBo() { NotificationEMailId = eMailBo.Id, EmailEventId = emailEventId, LogExceptionId = logExceptionId }); }
void SaveSent(NotificationEMailListBo eMailBo, bool sentSuccessfully) { NotificationEMailBusiness eMailBusiness = new NotificationEMailBusiness(); eMailBusiness.SaveSent(new NotificationEMailSentSaveBo() { NotificationEMailId = eMailBo.Id, Content = eMailBo.Content, SentSuccessfully = sentSuccessfully }); }
public void Send(NotificationEMailListBo eMailBo) { if (Stc.StartedList.Count(x => x == eMailBo.Id) > 0) { return; } //if (eMailBo.ReceiverList.Count(x => x.Receiver != "*****@*****.**") > 0) return; Stc.StartedList.Add(eMailBo.Id); SaveLog(eMailBo, Enums.EMailLogEvents.xStarted, null); Stc.sayi = 1; try { Business.Sys.SysBusiness sysBusiness = new Business.Sys.SysBusiness(); SysMailBo sysMailBo = Stc.SysMailList.FirstOrDefault(x => x.Id == sysBusiness.GetSysMailId(eMailBo.SubjectTypeId)); //string displayName = "Elmasium - " + Business.Stc.GetDicValue(sysMailBo.DisplayName, eMailBo.LanguageId); //if (eMailBo.SubjectTypeId == Enums.EMailSubjectTypes.xWelcome) // displayName = Business.Stc.GetDicValue("xWelcomeElmasium", eMailBo.LanguageId); eMailBo.Content = Business.Stc.DictionaryProcessText(eMailBo.Content, eMailBo.LanguageId); MailMessage mail = new MailMessage(); mail.From = new MailAddress(eMailBo.Sender, eMailBo.SenderDisplayName); mail.Body = eMailBo.Content; mail.IsBodyHtml = eMailBo.IsContentHtml; mail.Subject = eMailBo.Subject; foreach (NotificationEMailReceiverListBo item in eMailBo.ReceiverList) { switch (item.ReceiverTypeId) { case Enums.EMailReceiverTypes.To: mail.To.Add(new MailAddress(item.Receiver)); break; case Enums.EMailReceiverTypes.Cc: mail.CC.Add(new MailAddress(item.Receiver)); break; case Enums.EMailReceiverTypes.Bcc: mail.Bcc.Add(new MailAddress(item.Receiver)); break; default: mail.To.Add(new MailAddress(item.Receiver)); break; } } if (eMailBo.AttachList != null && eMailBo.AttachList.Count() > 0) { string outputPath = null; foreach (NotificationEMailAttachListBo item in eMailBo.AttachList) { outputPath = Path.Combine(Stc.PdfFileDirectory, item.UniqueId.ToString().ToUpper() + ".pdf"); item.HtmlRaw = Business.Stc.DictionaryProcessText(item.HtmlRaw, eMailBo.LanguageId); SaveAttach(item, outputPath); Attachment attachment = new Attachment(outputPath); attachment.Name = item.PseudoFileName; mail.Attachments.Add(attachment); } SaveLog(eMailBo, Enums.EMailLogEvents.xAttachFilesSavedSuccess, null); } SmtpClient smtp = new SmtpClient { Host = sysMailBo.Host, Port = sysMailBo.Port, EnableSsl = sysMailBo.Ssl, DeliveryMethod = SmtpDeliveryMethod.Network, UseDefaultCredentials = false, Credentials = new NetworkCredential(mail.From.Address, sysMailBo.Password) }; smtp.SendCompleted += (s, e) => { mail.Dispose(); smtp.Dispose(); ResponseBo exResponseBo = null; if (e.Error != null) { exResponseBo = SaveExLog(e.Error, this.GetType(), MethodBase.GetCurrentMethod().Name); } SaveLog(eMailBo, Enums.EMailLogEvents.xTransactionSuccessful, exResponseBo?.ReturnedId); SaveSent(eMailBo, true); }; smtp.SendAsync(mail, null); } catch (Exception ex) { ResponseBo exResponseBo = SaveExLog(ex, this.GetType(), MethodBase.GetCurrentMethod().Name); SaveLog(eMailBo, Enums.EMailLogEvents.xUnexpectedErrorOccurred, exResponseBo.ReturnedId); SaveSent(eMailBo, false); } }