예제 #1
0
        /// <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);
        }
예제 #2
0
        /// <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#", "&nbsp;"));
                    }

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