狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

C#及JAVA之郵件服務器IMAP文件夾名稱編碼解碼實現(支持中文名稱)

admin
2017年10月25日 11:19 本文熱度 6432
IMAP郵件客戶端中讀取和創建郵件夾時需要對郵件夾名稱進行編碼和解碼。該方法是通過網絡上流傳的perl語言方法改寫的,配合InterIMAP項目可以編寫完整IMAP郵件客戶端。
InterIMAP項目地址: http://interimap.codeplex.com/
編碼和解碼方法,具體含義可以參考國際標準的定義:http://www.faqs.org/rfcs/rfc3501.html
C#:
//編碼
private string IMAPEncode(string folder)
{
    string rtn = "", base64;
    int index = 0;
    Regex regAsis = new Regex(@"\G(?:[\x20-\x25\x27-\x7e])+");
    Regex reg26 = new Regex(@"\G&");
    Regex regEncode = new Regex(@"\G(?:[^\x20-\x7e])+");
    Regex regEq = new Regex(@"=+$");
    Regex regSlash = new Regex(@"\/");
    while (index < folder.Length)
    {
        Match m;
        m = regAsis.Match(folder, index);
        if (m.Success)
        {
            index = index + m.Length;
            rtn = rtn + m.Value;
            continue;
        }
        m = reg26.Match(folder, index);
        if (m.Success)
        {
            index = index + m.Length;
            rtn = rtn + "&-";
            continue;
        }
        m = regEncode.Match(folder, index);
        if (m.Success)
        {
            index = index + m.Length;
            base64 = Convert.ToBase64String(Encoding.GetEncoding("UTF-16BE").GetBytes(m.Value));
            base64 = regEq.Replace(base64, "");
            base64 = regSlash.Replace(base64, ",");
            rtn = rtn + "&" + base64 + "-";
            continue;
        }
    }
    return rtn;
}
       
// 解碼
private string IMAPDeconde(string folder)
{
    string rtn = "", base64;
    int index = 0;
    Regex regAsis = new Regex(@"\G([^&]+)");
    Regex reg26 = new Regex(@"\G\&-");
    Regex regDecode = new Regex(@"\G\&([A-Za-z0-9+,]+)-?");
    Regex regComma = new Regex(@",");
    while (index < folder.Length)
    {
        Match m;
        m = regAsis.Match(folder, index);
        if(m.Success)
        {
            index = index + m.Length;
            rtn = rtn + m.Value;
            continue;
        }
        m = reg26.Match(folder, index);
        if(m.Success)
        { index = index + m.Length;
            rtn = rtn + "&";
            continue;
        }
        m = regDecode.Match(folder, index);
        if(m.Success)
        {
            index = index + m.Length;
            base64 = m.Value.Substring(1, m.Value.Length - 2);
            base64 = regComma.Replace(base64, "/");
            int mod = base64.Length % 4;
            if(mod > 0 )
            {
                int count = 4 - mod;
                while (count > 0)
                {
                    base64 += "=";
                    count--;
                }
                //base64 = base64.PadRight(base64.Length + (4 - mod), "=");
            }
            base64 = Encoding.GetEncoding("UTF-16BE").GetString(Convert.FromBase64String(base64));
            rtn = rtn + base64;
            continue;
        }
    }
    return rtn;
}

JAVA:
  1. ImapFolderEncoder {  
  2.     public static String encode(String folder) {  
  3.     String rtn = "", base64;  
  4.     int index = 0;  
  5.     Pattern regAsis = Pattern.compile("\\G(?:[\\x20-\\x25\\x27-\\x7e])+");  
  6.     Pattern reg26 = Pattern.compile("\\G&");  
  7.     Pattern regEncode = Pattern.compile("\\G(?:[^\\x20-\\x7e])+");  
  8.     Pattern regEq = Pattern.compile("=+$");  
  9.     Pattern regSlash = Pattern.compile("\\/");  
  10.     while (index < folder.length()) {  
  11.         Matcher m;  
  12.         m = regAsis.matcher(folder);  
  13.         if (m.find(index)) {  
  14.         index = index + (m.end() - m.start());  
  15.         rtn = rtn + m.group();  
  16.         continue;  
  17.         }  
  18.         m = reg26.matcher(folder);  
  19.         if (m.find(index)) {  
  20.         index = index + (m.end() - m.start());  
  21.         rtn = rtn + "&-";  
  22.         continue;  
  23.         }  
  24.         m = regEncode.matcher(folder);  
  25.         if (m.find(index)) {  
  26.         index = index + (m.end() - m.start());  
  27.         base64 = SimpleUtil.encodeBase64Content(m.group(), "UTF-16BE");  
  28.         base64 = base64.replaceAll(regEq.pattern(), "");  
  29.         base64 = base64.replaceAll(regSlash.pattern(), ",");  
  30.         rtn = rtn + "&" + base64 + "-";  
  31.         continue;  
  32.         }  
  33.     }  
  34.     return rtn;  
  35.     }  
  36.       
  37. }  
  1. ImapFolderDecoder {  
  2.     public static String decode(String folder) {  
  3.     String rtn = "", base64;  
  4.     int index = 0;  
  5.     Pattern regAsis = Pattern.compile("\\G([^&]+)");  
  6.     Pattern reg26 = Pattern.compile("\\G\\&-");  
  7.     Pattern regDecode = Pattern.compile("\\G\\&([A-Za-z0-9+,]+)-?");  
  8.     Pattern regComma = Pattern.compile(",");  
  9.     while (index < folder.length()) {  
  10.         Matcher m;  
  11.         m = regAsis.matcher(folder);  
  12.         if (m.find(index)) {  
  13.         index = index + (m.end() - m.start());  
  14.         rtn = rtn + m.group();  
  15.         continue;  
  16.         }  
  17.         m = reg26.matcher(folder);  
  18.         if (m.find(index)) {  
  19.         index = index + (m.end() - m.start());  
  20.         rtn = rtn + "&";  
  21.         continue;  
  22.         }  
  23.         m = regDecode.matcher(folder);  
  24.         if (m.find(index)) {  
  25.         index = index + (m.end() - m.start());  
  26.         base64 = m.group().substring(1, m.group().length() - 1);  
  27.         base64 = base64.replaceAll(regComma.pattern(), "/");  
  28.         int mod = base64.length() % 4;  
  29.         int count = 4 - mod;  
  30.         while (count > 0) {  
  31.             base64 += "=";  
  32.             count--;  
  33.         }  
  34.         base64 = SimpleUtil.base64Decode(base64, "UTF-16BE");  
  35.         rtn = rtn + base64;  
  36.         continue;  
  37.         }  
  38.     }  
  39.     return rtn;  
  40.     }  
  41. }  

該文章在 2017/10/25 14:27:59 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved