/// <summary> /// ส่งเมล์จาก EmailTemplate โดยระบุค่าตัวแปรได้ /// </summary> /// <param name="TemplateName">ชื่อ Template</param> /// <param name="From">เมล์ต้นทาง</param> /// <param name="To">เมล์ปลายทาง</param> /// <param name="Parameter">ค่าที่ใช้แทนในเมล์ เช่น [Username],nithi.re</param> /// <param name="outMessage">ข้อความแจ้งเตือนเมื่อเกิดข้อผิดพลาด</param> /// <param name="FromAliasName">ชื่อเมล์ต้นทาง</param> /// <param name="Cc">เมล์แนบ</param> /// <param name="Bcc">เมล์ไม่เปิดเผย</param> /// <param name="Signature">ข้อความท้ายเมล์</param> /// <returns>true=ส่งผ่าน , false=ส่งไม่ผ่าน</returns> /// <example> /// clsMail clsMail=new clsMail(); /// string outMessage; /// clsMail.SendTemplate( /// "UserRegisterConfirm", /// "*****@*****.**", /// "*****@*****.**", /// new string[,] { { "[Username]", "ยูสเซอร์เนม" }, { "[UIDEncrypt]", "ยูไอดีเอ็นคริบ" } }, /// out outMessage); /// </example> public bool SendTemplate(string TemplateName, string From, string To, string[,] Parameter, out string outMessage, string FromAliasName = "", string Cc = "", string Bcc = "", string Signature = "") { #region Variable bool rtnValue = false; outMessage = ""; StringBuilder strSQL = new StringBuilder(); DataTable dt = new DataTable(); clsSQL clsSQL = new clsSQL(); clsLanguage clsLanguage = new clsLanguage(); clsData clsData=new clsData(); clsDefault clsDefault = new clsDefault(); #endregion #region Found Language #region SQL Query strSQL.Append("SELECT "); strSQL.Append("EmailTemplate.UID,Language.Name LanguageName,EmailTemplate.Subject,EmailTemplate.Message "); strSQL.Append("FROM "); strSQL.Append("EmailTemplate "); strSQL.Append("INNER JOIN Language ON EmailTemplate.LanguageUID=Language.UID "); strSQL.Append("AND Language.Active='1' "); //strSQL.Append("AND Language.Name='" + clsLanguage.LanguageCurrent + "' "); strSQL.Append("WHERE "); strSQL.Append("EmailTemplate.Active='1' "); strSQL.Append("AND EmailTemplate.Name='" + TemplateName + "' "); strSQL.Append("ORDER BY "); strSQL.Append("Language.Sort ASC"); #endregion dt = clsSQL.Bind(strSQL.ToString(), dbType, cs); strSQL.Length = 0; strSQL.Capacity = 0; #endregion if (dt != null && dt.Rows.Count > 0) { #region Find LanguageRow bool languageMatch = false; int i; for (i = 0; i < dt.Rows.Count; i++) { if (dt.Rows[i]["LanguageName"].ToString() == clsLanguage.LanguageCurrent) { languageMatch = true; break; } } if (!languageMatch) i = 0; #endregion #region Parameter Replace string subject = dt.Rows[i]["Subject"].ToString(); string message = dt.Rows[i]["Message"].ToString(); subject = clsData.Replacer(subject, Parameter); message = clsData.Replacer(message, Parameter); if (Send(From, To, subject, message, out outMessage, FromAliasName, Cc, Bcc, Signature)) { SendTemplateLog(dt.Rows[i]["UID"].ToString(), From, To, Cc, Bcc, "Complete"); rtnValue = true; } else { SendTemplateLog(dt.Rows[i]["UID"].ToString(), From, To, Cc, Bcc, clsDefault.Left(outMessage,90)); rtnValue = false; } #endregion } else { outMessage = "ไม่พบข้อมูล EmailTemplate"; return false; } return rtnValue; }
/// <summary> /// ส่งเมล์จาก EmailTemplate โดยระบุค่าตัวแปรได้ /// </summary> /// <param name="TemplateName">ชื่อ Template</param> /// <param name="From">เมล์ต้นทาง</param> /// <param name="To">เมล์ปลายทาง</param> /// <param name="Parameter">ค่าที่ใช้แทนในเมล์ เช่น [Username],nithi.re</param> /// <param name="outMessage">ข้อความแจ้งเตือนเมื่อเกิดข้อผิดพลาด</param> /// <param name="FromAliasName">ชื่อเมล์ต้นทาง</param> /// <param name="Cc">เมล์แนบ</param> /// <param name="Bcc">เมล์ไม่เปิดเผย</param> /// <param name="Signature">ข้อความท้ายเมล์</param> /// <returns>true=ส่งผ่าน , false=ส่งไม่ผ่าน</returns> /// <example> /// clsMail clsMail=new clsMail(); /// string outMessage; /// clsMail.SendTemplate( /// "UserRegisterConfirm", /// "*****@*****.**", /// "*****@*****.**", /// new string[,] { { "[Username]", "ยูสเซอร์เนม" }, { "[UIDEncrypt]", "ยูไอดีเอ็นคริบ" } }, /// out outMessage); /// </example> public bool SendTemplate(string TemplateName, string From, string To, string[,] Parameter, out string outMessage, string FromAliasName = "", string Cc = "", string Bcc = "", string Signature = "") { #region Variable bool rtnValue = false; outMessage = ""; StringBuilder strSQL = new StringBuilder(); DataTable dt = new DataTable(); clsSQL clsSQL = new clsSQL(); clsLanguage clsLanguage = new clsLanguage(); clsData clsData = new clsData(); clsDefault clsDefault = new clsDefault(); #endregion #region Found Language #region SQL Query strSQL.Append("SELECT "); strSQL.Append("EmailTemplate.UID,Language.Name LanguageName,EmailTemplate.Subject,EmailTemplate.Message "); strSQL.Append("FROM "); strSQL.Append("EmailTemplate "); strSQL.Append("INNER JOIN Language ON EmailTemplate.LanguageUID=Language.UID "); strSQL.Append("AND Language.Active='1' "); //strSQL.Append("AND Language.Name='" + clsLanguage.LanguageCurrent + "' "); strSQL.Append("WHERE "); strSQL.Append("EmailTemplate.Active='1' "); strSQL.Append("AND EmailTemplate.Name='" + TemplateName + "' "); strSQL.Append("ORDER BY "); strSQL.Append("Language.Sort ASC"); #endregion dt = clsSQL.Bind(strSQL.ToString(), dbType, cs); strSQL.Length = 0; strSQL.Capacity = 0; #endregion if (dt != null && dt.Rows.Count > 0) { #region Find LanguageRow bool languageMatch = false; int i; for (i = 0; i < dt.Rows.Count; i++) { if (dt.Rows[i]["LanguageName"].ToString() == clsLanguage.LanguageCurrent) { languageMatch = true; break; } } if (!languageMatch) { i = 0; } #endregion #region Parameter Replace string subject = dt.Rows[i]["Subject"].ToString(); string message = dt.Rows[i]["Message"].ToString(); subject = clsData.Replacer(subject, Parameter); message = clsData.Replacer(message, Parameter); if (Send(From, To, subject, message, out outMessage, FromAliasName, Cc, Bcc, Signature)) { SendTemplateLog(dt.Rows[i]["UID"].ToString(), From, To, Cc, Bcc, "Complete"); rtnValue = true; } else { SendTemplateLog(dt.Rows[i]["UID"].ToString(), From, To, Cc, Bcc, clsDefault.Left(outMessage, 90)); rtnValue = false; } #endregion } else { outMessage = "ไม่พบข้อมูล EmailTemplate"; return(false); } return(rtnValue); }