zoukankan      html  css  js  c++  java
  • 解析郵件內容

    #region 解析郵件內容

            /// <summary>
            /// 解析郵件內容
            /// 創建人:yeqx
            /// 創建時間:2011-05-20
            /// </summary>
            /// <param name="MsgContent">郵件內容</param>
            /// <param name="Parameters">條件集</param>
            /// <returns>解析后的郵件內容</returns>
            /// <remarks>特殊字符用"<%TableName.FieldName%>"包圍</remarks>
            public static string AnalysisEmailContent(string MsgContent, IDictionary<string, string> Parameters)
            {
                try
                {
                    if (string.IsNullOrEmpty(MsgContent))
                    {
                        return MsgContent;
                    }
                    //使用foreach循環獲取
                    //Dictionary<string, string> DicField = GetField(MsgContent);  //用來存放特殊字符
                    //使用正則表達式獲取
                    string RegexString = @"<%(?<text>[^%>]*)%>";   //用來存放特殊字符
                    Dictionary<string, string> DicField = GetRegValue(MsgContent, RegexString, "text", true);
                    if (DicField.Count == 0)
                    {
                        return MsgContent;
                    }
                    Dictionary<string, string> DicTemp = GetFiledValue(DicField, Parameters);//解析特殊字符值
                    string strTemp = string.Empty;
                    foreach (KeyValuePair<string, string> kvp in DicTemp)
                    {
                        strTemp = "<%" + kvp.Key + "%>";
                        MsgContent = MsgContent.Replace(strTemp, kvp.Value);//替換特殊字符為數據庫數據
                    }
                    return MsgContent;
                }
                catch (Exception exception)
                {
                    JSUtil.Alert(Util.GetMessage("SystemErrInfo"));
                    Util.LogInfo(exception, "CommonUtil", "AnalysisEmailContent", true);
                    return string.Empty;
                }
            }


            /// <summary>
            /// 正则表达式取值
            /// </summary>
            /// <param name="HtmlCode">源码</param>
            /// <param name="RegexString">正则表达式</param>
            /// <param name="GroupKey">正则表达式分组关键字</param>
            /// <param name="RightToLeft">是否从右到左</param>
            /// <returns></returns>
            private static Dictionary<string, string> GetRegValue(string HtmlCode, string RegexString, string GroupKey, bool RightToLeft)
            {
                bool blnFlag = true;
                MatchCollection m;
                Regex r;
                if (RightToLeft == true)
                {
                    r = new Regex(RegexString, RegexOptions.IgnoreCase | RegexOptions.Singleline | RegexOptions.RightToLeft);
                }
                else
                {
                    r = new Regex(RegexString, RegexOptions.IgnoreCase | RegexOptions.Singleline);
                }
                m = r.Matches(HtmlCode);
                Dictionary<string, string> DicField = new Dictionary<string, string>();  //用來存放特殊字符
                string strTemp = string.Empty;
                System.Text.RegularExpressions.Regex reg1 = new System.Text.RegularExpressions.Regex(@"^[A-Za-z0-9._]+$");
                foreach (Match match in m)
                {
                    strTemp = match.Groups[GroupKey].Value;
                    blnFlag = !DicField.ContainsKey(strTemp) && reg1.IsMatch(strTemp);
                    if (blnFlag)
                    {
                        DicField.Add(strTemp, string.Empty);
                    }
                }
                return DicField;
            }

            /// <summary>
            /// 根據特殊集合獲取值
            /// 創建人:yeqx
            /// 創建時間:2011-05-23
            /// </summary>
            /// <param name="GetField">特殊字符集</param>
            /// <param name="DicField">參數集</param>
            /// <returns>特殊字符對應值</returns>
            private static Dictionary<string, string> GetFiledValue(Dictionary<string, string> DicField, IDictionary<string, string> Parameters)
            {
                try
                {
                    bool blnFlag = true;
                    //對需要解析的文字讀取數據庫
                    Hashtable htParameters = new Hashtable();
                    DataSet dstResult = new DataSet();
                    Dictionary<string, string> DicTemp = new Dictionary<string, string>();
                    foreach (KeyValuePair<string, string> kvp in DicField)
                    {
                        htParameters.Clear();
                        dstResult = new DataSet();
                        htParameters["pTableName"] = kvp.Key.Split('.')[0];
                        htParameters["pFieldName"] = kvp.Key.Split('.')[1];
                        //判斷參數是否包含此字段的
                        blnFlag = Parameters.Keys.Contains(kvp.Key);
                        if (blnFlag)
                        {
                            htParameters["pConditions"] = Parameters[kvp.Key];
                        }
                        else
                        {
                            htParameters["pConditions"] = string.Empty;
                        }
                        dstResult = QueryHandle.QueryForDataSet("usp_GetFiledValue", htParameters);
                        blnFlag = dstResult != null && dstResult.Tables.Count > 0 && dstResult.Tables[0].Rows.Count > 0;
                        DicTemp.Add(kvp.Key, string.Empty);
                        if (blnFlag)
                        {
                            foreach (DataRow drowItem in dstResult.Tables[0].Rows)
                            {
                                DicTemp[kvp.Key] += drowItem[0].ToString() + ",";
                            }
                            if (DicTemp[kvp.Key].Length > 0)
                            {
                                DicTemp[kvp.Key] = DicTemp[kvp.Key].Substring(0, DicTemp[kvp.Key].Length - 1);
                            }
                        }
                    }
                    return DicTemp;
                }
                catch (Exception exception)
                {
                    JSUtil.Alert(Util.GetMessage("SystemErrInfo"));
                    Util.LogInfo(exception, "CommonUtil", "AnalysisEmailContent", true);
                    return new Dictionary<string, string>();
                }
            }

            #endregion
  • 相关阅读:
    HTML JS 数据校验
    算法: 实现LRU缓存,读取、写入O(1)实现
    C/C++ 二维数组
    tmux 终端分屏利器使用
    关于Apache Tomcat存在文件包含漏洞的安全公告
    SQLSERVER触发器触发INSERT,UPDATE,DELETE三种状态
    SQL Server 触发器
    SQL Server游标
    SQL Server基础之游标
    阿里maven镜像配置
  • 原文地址:https://www.cnblogs.com/YepQX/p/2055240.html
Copyright © 2011-2022 走看看