public void SaveEmail(SystemEmailMessage_NOZ model) { if (model.SystemEmailMessageID != 0) { model.Status = (int)Enums.SystemEmailMessageStatus.Processed; var original = context.SystemEmailMessage_NOZ.Where(sem => sem.SystemEmailMessageID == model.SystemEmailMessageID).FirstOrDefault(); context.Entry(original).CurrentValues.SetValues(model); context.SaveChanges(); } }
private void SaveToSystemEmailMessage(string emailTo, string bodyMessage, int?userID, int hierarchyLevel = 1, string emailSubject = "Novo sporočilo", string attachments = "") { try { SystemEmailMessage_NOZ emailConstruct = null; for (int i = 0; i < hierarchyLevel; i++) { emailConstruct = new SystemEmailMessage_NOZ(); //DataTypesHelper.LogThis("*****in for loop SaveToSystemEmailMessage*****"); emailConstruct.EmailFrom = ConfigurationManager.AppSettings["EmailFromForDB"].ToString(); emailConstruct.EmailSubject = emailSubject; emailConstruct.EmailBody = bodyMessage; emailConstruct.Status = (int)Enums.SystemEmailMessageStatus.UnProcessed; emailConstruct.ts = DateTime.Now; emailConstruct.tsIDOsebe = userID.HasValue ? userID.Value : 0; if (i == 0) { emailConstruct.EmailTo = emailTo; } else if (i == 1) { emailConstruct.EmailTo = context.OsebeNadrejeni_NOZ.Where(on => on.OsebaID == userID.Value).FirstOrDefault().Osebe_NOZ1.Email;//Nadrejeni; emailConstruct.EmailSubject += " - Sporočilo za nadrejenega"; } else if (i == 2) { int ceo = Convert.ToInt32(ConfigurationManager.AppSettings["CEOId"].ToString()); emailConstruct.EmailTo = context.Osebe_NOZ.Where(o => o.OsebaID == ceo).FirstOrDefault().Email;//direktor; emailConstruct.EmailSubject += " - Sporočilo za nadrejenega"; } if (attachments.Length > 0) { emailConstruct.Attachments = attachments; } context.SystemEmailMessage_NOZ.Add(emailConstruct); } context.SaveChanges(); } catch (DbEntityValidationException e) { foreach (var eve in e.EntityValidationErrors) { Console.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:", eve.Entry.Entity.GetType().Name, eve.Entry.State); foreach (var ve in eve.ValidationErrors) { Console.WriteLine("- Property: \"{0}\", Error: \"{1}\"", ve.PropertyName, ve.ErrorMessage); } } throw; } catch (Exception ex) { throw new Exception("Method SaveToSystemEmailMessage ERROR: " + ex); } }
private void SendMessages(SmtpClient client, SystemEmailMessage item = null, SystemEmailMessage_OTP otpItem = null, SystemEmailMessage_PDO pdoItem = null, SystemEmailMessage_NOZ nozItem = null) { bool isOTPitem = false; bool isPDOitem = false; bool isNOZItem = false; try { if (otpItem != null) { isOTPitem = true; } else if (pdoItem != null) { isPDOitem = true; } else if (nozItem != null) { isNOZItem = true; } //if (String.IsNullOrEmpty(isOTPitem ? otpItem.EmailTo : (isPDOitem ? ((pdoItem.TOEmails != null && pdoItem.TOEmails.Length > 0) ? pdoItem.TOEmails : pdoItem.EmailTo) : (isNOZItem ? nozItem.EmailTo : item.EmailTo)))) if (String.IsNullOrEmpty(isOTPitem ? otpItem.EmailTo : (isPDOitem ? pdoItem.EmailTo : (isNOZItem ? nozItem.EmailTo : item.EmailTo)))) { if (isOTPitem) { otpItem.Status = (int)Enums.SystemEmailMessageStatus.Processed; } else if (isPDOitem) { pdoItem.Status = (int)Enums.SystemEmailMessageStatus.Processed; } else if (isNOZItem) { pdoItem.Status = (int)Enums.SystemEmailMessageStatus.Processed; } else { item.Status = (int)Enums.SystemEmailMessageStatus.Processed; } DataTypesHelper.LogThis("Couldn't send email! Email to is empty"); } else { string sender = "", emailTitle = "", emailTo = "", emailSubject = "", emailBody = ""; if (isOTPitem) { DataTypesHelper.LogThis("OTP ITEM!"); sender = ConfigurationManager.AppSettings["SenderOTP"].ToString(); //sender = otpItem.EmailFrom; emailTitle = "(" + otpItem.EmailFrom + ") - " + ConfigurationManager.AppSettings["EmailTitleOTP"].ToString(); emailTo = otpItem.EmailTo; emailSubject = otpItem.EmailSubject; emailBody = otpItem.EmailBody; } else if (isPDOitem) { DataTypesHelper.LogThis("PDO ITEM"); if (Convert.ToBoolean(ConfigurationManager.AppSettings["UseUserEmailSettings"])) { if (pdoItem.OsebaEmailFromID.HasValue) { SettingsModel set = pdoSettingsRepo.GetLatestSettings(); string host = String.IsNullOrEmpty(set.EmailStreznik) ? pdoItem.Osebe_PDO.EmailStreznik : set.EmailStreznik; //int port = 587;//set.EmailVrata > 0 ? set.EmailVrata : pdoItem.Osebe_PDO.EmailVrata.Value; int port = set.EmailVrata > 0 ? set.EmailVrata : pdoItem.Osebe_PDO.EmailVrata.Value; //bool sslEnable = false;//!set.EmailSifriranjeSSL ? pdoItem.Osebe_PDO.EmailSifriranjeSSL.Value : set.EmailSifriranjeSSL; bool sslEnable = set.EmailSifriranjeSSL ? pdoItem.Osebe_PDO.EmailSifriranjeSSL.Value : set.EmailSifriranjeSSL; //var credentials = new NetworkCredential("*****@*****.**"/*pdoItem.Osebe_PDO.Email, "Geslo123."/*pdoItem.Osebe_PDO.EmailGeslo); var credentials = new NetworkCredential(pdoItem.Osebe_PDO.Email, pdoItem.Osebe_PDO.EmailGeslo); client = new SmtpClient { Host = host, Port = port, EnableSsl = sslEnable, DeliveryMethod = SmtpDeliveryMethod.Network, UseDefaultCredentials = false, Credentials = credentials }; } } string emailTitleOseba = pdoItem.Osebe_PDO != null ? pdoItem.Osebe_PDO.Ime + " " + pdoItem.Osebe_PDO.Priimek : ConfigurationManager.AppSettings["EmailTitlePDO"].ToString();; sender = pdoItem.OsebaEmailFromID != null ? pdoItem.Osebe_PDO.Email : ConfigurationManager.AppSettings["SenderPDO"].ToString(); emailTitle = emailTitleOseba; emailTo = pdoItem.EmailTo; emailSubject = pdoItem.EmailSubject; emailBody = pdoItem.EmailBody; } else if (isNOZItem) { sender = ConfigurationManager.AppSettings["SenderNOZ"].ToString(); //sender = otpItem.EmailFrom; //string emailTitleOseba = nozItem.Osebe_PDO != null ? pdoItem.Osebe_PDO.Ime + " " + pdoItem.Osebe_PDO.Priimek : ConfigurationManager.AppSettings["EmailTitlePDO"].ToString(); ; //sender = nozItem.OsebaEmailFromID != null ? nozItem.Osebe_PDO.Email : ConfigurationManager.AppSettings["SenderNOZ"].ToString(); emailTitle = "(" + nozItem.EmailFrom + ") - " + ConfigurationManager.AppSettings["EmailTitleNOZ"].ToString(); emailTo = nozItem.EmailTo; emailSubject = nozItem.EmailSubject; emailBody = nozItem.EmailBody; } else { sender = ConfigurationManager.AppSettings["Sender"].ToString(); emailTitle = ConfigurationManager.AppSettings["EmailTitle"].ToString(); emailTo = item.EmailTo; emailSubject = item.EmailSubject; emailBody = item.EmailBody; } MailMessage message = new MailMessage(); // preverimo če je emailTO prazen pomeni, da vazame list pošiljateljev if (emailTo.Length > 0) { if (emailTo != null && emailTo.Length > 0) { string[] splitTOEmails = emailTo.Split(';'); if (splitTOEmails.Length > 1) { foreach (var email in splitTOEmails) { MailAddress ToEmail = new MailAddress(email); message.To.Add(ToEmail); } } else { message.To.Add(emailTo); } } } message.Sender = new MailAddress(sender); message.From = new MailAddress(sender, emailTitle); message.Subject = emailSubject; message.IsBodyHtml = true; message.Body = emailBody; message.BodyEncoding = Encoding.UTF8; if (isOTPitem) { otpItem.Status = (int)Enums.SystemEmailMessageStatus.Processed; } else if (isPDOitem) { pdoItem.Status = (int)Enums.SystemEmailMessageStatus.Processed; } else if (isNOZItem) { nozItem.Status = (int)Enums.SystemEmailMessageStatus.Processed; } else { item.Status = (int)Enums.SystemEmailMessageStatus.Processed; } // Boris 20.11.2019: attachments string attachmentFilename = ""; if (isOTPitem || isPDOitem || isNOZItem) { attachmentFilename = isOTPitem ? otpItem.Attachments : (isPDOitem ? pdoItem.Attachments : nozItem.Attachments); } else { } // Boris 27.04.2020: CC seznam emailov if (isPDOitem) { if (pdoItem.CCEmails != null && pdoItem.CCEmails.Length > 0) { string[] splitCCEmails = pdoItem.CCEmails.Split(';'); foreach (var email in splitCCEmails) { MailAddress copy = new MailAddress(email); message.CC.Add(copy); } } } if (!string.IsNullOrEmpty(attachmentFilename)) { string[] splitAttachments = attachmentFilename.Split(';'); foreach (var fileAttachment in splitAttachments) { if (File.Exists(attachmentFilename)) { Attachment attachment = new Attachment(fileAttachment, MediaTypeNames.Application.Octet); ContentDisposition disposition = attachment.ContentDisposition; disposition.CreationDate = File.GetCreationTime(fileAttachment); disposition.ModificationDate = File.GetLastWriteTime(fileAttachment); disposition.ReadDate = File.GetLastAccessTime(fileAttachment); disposition.FileName = Path.GetFileName(fileAttachment); disposition.Size = new FileInfo(fileAttachment).Length; disposition.DispositionType = DispositionTypeNames.Attachment; message.Attachments.Add(attachment); } } } // ------------------------------------------------------------------------------------ client.Send(message); } if (isOTPitem) { otpSystemEmailMessageRepo.SaveEmail(otpItem); } else if (isPDOitem) { pdoSystemEmailMessageRepo.SaveEmail(pdoItem); } else if (isNOZItem) { nozSystemEmailMessageRepo.SaveEmail(nozItem); } else { systemEmailMessageRepo.SaveEmail(item); } } catch (SmtpFailedRecipientsException ex) { if (isOTPitem) { otpItem.Status = (int)Enums.SystemEmailMessageStatus.RecipientError; } else if (isPDOitem) { pdoItem.Status = (int)Enums.SystemEmailMessageStatus.RecipientError; } else if (isNOZItem) { nozItem.Status = (int)Enums.SystemEmailMessageStatus.RecipientError; } else { item.Status = (int)Enums.SystemEmailMessageStatus.RecipientError; } DataTypesHelper.LogThis("Couldn't send the email to receipient: " + item.EmailTo + "\n" + ex.Message); if (isOTPitem) { otpSystemEmailMessageRepo.SaveEmail(otpItem); } else if (isPDOitem) { pdoSystemEmailMessageRepo.SaveEmail(pdoItem); } else if (isNOZItem) { nozSystemEmailMessageRepo.SaveEmail(nozItem); } else { systemEmailMessageRepo.SaveEmail(item); } } catch (SmtpException ex) { if (ex.Message.Contains("Mailbox unavailable")) { if (isOTPitem) { otpItem.Status = (int)Enums.SystemEmailMessageStatus.RecipientError; } else if (isPDOitem) { pdoItem.Status = (int)Enums.SystemEmailMessageStatus.RecipientError; } else if (isNOZItem) { nozItem.Status = (int)Enums.SystemEmailMessageStatus.RecipientError; } else { item.Status = (int)Enums.SystemEmailMessageStatus.RecipientError; } DataTypesHelper.LogThis("Could not send the email to receipient: " + item.EmailTo); if (isOTPitem) { otpSystemEmailMessageRepo.SaveEmail(otpItem); } else if (isPDOitem) { pdoSystemEmailMessageRepo.SaveEmail(pdoItem); } else if (isNOZItem) { nozSystemEmailMessageRepo.SaveEmail(nozItem); } else { systemEmailMessageRepo.SaveEmail(item); } } else { if (isOTPitem) { otpItem.Status = (int)Enums.SystemEmailMessageStatus.RecipientError; } else if (isPDOitem) { pdoItem.Status = (int)Enums.SystemEmailMessageStatus.RecipientError; } else if (isNOZItem) { nozItem.Status = (int)Enums.SystemEmailMessageStatus.RecipientError; } else { item.Status = (int)Enums.SystemEmailMessageStatus.RecipientError; } DataTypesHelper.LogThis("SmtpException: " + ex.Message); if (isOTPitem) { otpSystemEmailMessageRepo.SaveEmail(otpItem); } else if (isPDOitem) { pdoSystemEmailMessageRepo.SaveEmail(pdoItem); } else if (isNOZItem) { nozSystemEmailMessageRepo.SaveEmail(nozItem); } else { systemEmailMessageRepo.SaveEmail(item); } } } catch (Exception ex) { if (isOTPitem) { otpItem.Status = (int)Enums.SystemEmailMessageStatus.RecipientError; } else if (isPDOitem) { pdoItem.Status = (int)Enums.SystemEmailMessageStatus.RecipientError; } else if (isNOZItem) { nozItem.Status = (int)Enums.SystemEmailMessageStatus.RecipientError; } else { item.Status = (int)Enums.SystemEmailMessageStatus.Error; } if (isOTPitem) { otpSystemEmailMessageRepo.SaveEmail(otpItem); } else if (isPDOitem) { pdoSystemEmailMessageRepo.SaveEmail(pdoItem); } else if (isNOZItem) { nozSystemEmailMessageRepo.SaveEmail(nozItem); } else { systemEmailMessageRepo.SaveEmail(item); } DataTypesHelper.LogThis("LOG1: " + ex.Message); } }