/// <summary> /// Get the email type with the good language /// </summary> /// <param name="EMailTypeId"></param> /// <param name="LanguageId"></param> /// <returns></returns> public EmailTypeLanguage GetEMailTypeLanguage(int EMailTypeId, int LanguageId) { EmailTypeLanguage result = null; try { result = _emailTypeLanguageRepo.FindAllBy(e => e.EMailTypeId == EMailTypeId && LanguageId == e.LanguageId).FirstOrDefault(); } catch (Exception e) { Commons.Logger.GenerateError(e, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType, "EMailTypeId = " + EMailTypeId.ToString() + " and LanguageId=" + LanguageId.ToString()); } return(result); }
/// <summary> /// Methode used to send an email /// </summary> /// <param name="Email"></param> /// <returns></returns> public bool SendMail(Email Email) { bool result = false; try { int LanguageId = CommonsConst.Languages.English; string LangTag = CommonsConst.Languages.ToString(LanguageId); if (String.IsNullOrWhiteSpace(Email.RootPathDefault)) { Email.RootPathDefault = FileHelper.GetRootPathDefault() + @"\"; } if (Email.EmailContent == null) { Email.EmailContent = new List <Tuple <string, string> >(); } DataEntities.Model.User User = null; if (Email.UserId != null && Email.UserId.Value > 0) { User = _userRepo.Get(Email.UserId.Value); } if (User != null && User.Id > 0) { LangTag = User.Language?.Code ?? CommonsConst.Const.DefaultCulture; LanguageId = User.LanguageId; if (String.IsNullOrWhiteSpace(Email.ToEmail)) { Email.ToEmail = User.AspNetUser.Email; } Email.EmailContent.Add(new Tuple <string, string>("#UserFirstName#", User.FirstName)); Email.EmailContent.Add(new Tuple <string, string>("#UserFullName#", User.LastName)); } else { Email.EmailContent.Add(new Tuple <string, string>("#UserFirstName#", "user")); Email.EmailContent.Add(new Tuple <string, string>("#UserFullName#", "user")); } Email.EmailContent.Add(new Tuple <string, string>("#WebSiteURL#", Utils.Website)); Email.LanguageId = LanguageId; EmailTypeLanguage EMailTypeLanguage = GetEMailTypeLanguage(Email.EMailTypeId, Email.LanguageId); if (EMailTypeLanguage == null && Email.LanguageId != Languages.English) { EMailTypeLanguage = GetEMailTypeLanguage(Email.EMailTypeId, Languages.English); } if (EMailTypeLanguage != null && !String.IsNullOrWhiteSpace(Email.ToEmail)) { if (!Utils.IsProductionWebsite()) { Email.EmailContent.Add(new Tuple <string, string>("#RealUserEMail#", "Real mail : " + Email.ToEmail)); Email.ToEmail = CommonsConst.Const.EMailDev; } else { Email.EmailContent.Add(new Tuple <string, string>("#RealUserEMail#", " ")); } Email.EMailTypeLanguageId = EMailTypeLanguage.Id; Email.EMailTemplate = EMailTypeLanguage.TemplateName; Email.BasePathFile = Email.RootPathDefault + Const.BasePathTemplateEMails.Replace("~/", "\\"); if (String.IsNullOrWhiteSpace(Email.Subject)) { Email.Subject = EMailTypeLanguage.Subject; } if (String.IsNullOrWhiteSpace(Email.FromEmail)) { Email.FromEmail = EMailHelper.MailAdress; } Email.AttachmentsMails = new List <System.Net.Mail.Attachment>(); if (Email.Attachments != null) { foreach (string file in Email.Attachments) { try { string FileName = FileHelper.GetStorageRoot(file); byte[] BitesTab = FileHelper.GetFileToDownLoad(FileName); if (BitesTab != null) { Email.AttachmentsMails.Add(new System.Net.Mail.Attachment(new MemoryStream(BitesTab), Path.GetFileName(FileName))); } } catch (Exception e) { result = false; Commons.Logger.GenerateError(e, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType, "file = " + file); } } } Task.Factory.StartNew(() => SendMailAsync(Email)); result = true; } else { result = false; Commons.Logger.GenerateInfo("No emailtypelanguage found : UserMail = " + Email.ToEmail + " and Language = " + Email.LanguageId + " and EMailTypeId = " + Email.EMailTypeId); } } catch (Exception e) { result = false; Commons.Logger.GenerateError(e, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType, "UserMail = " + Email.ToEmail + " and subject = " + Email.Subject + " and EMailTypeId = " + Email.EMailTypeId); } return(result); }