高分求一个eml的解码代码(C#)......

解决方案 »

  1.   

    foxmail编码:public static string ConvertFromQPString(string quoted_printableString)
    {
    string InputString=quoted_printableString;
    StringBuilder builder1 = new StringBuilder();
    InputString = InputString.Replace("=\r\n", "");
    for (int num1 = 0; num1 < InputString.Length; num1++)
    {
    if (InputString[num1] == '=')
    {
    try
    {
    if (HexToDec(InputString.Substring(num1 + 1, 2)) < 0x80)
    {
    if (HexToDec(InputString.Substring(num1 + 1, 2)) >= 0)
    {
    byte[] buffer1 = new byte[1] { (byte) HexToDec(InputString.Substring(num1 + 1, 2)) } ;
    builder1.Append(Encoding.Default.GetString(buffer1));
    num1 += 2;
    }
    }
    else if (InputString[num1 + 1] != '=')
    {
    byte[] buffer2 = new byte[2] { (byte) HexToDec(InputString.Substring(num1 + 1, 2)), (byte) HexToDec(InputString.Substring(num1 + 4, 2)) } ;
    builder1.Append(Encoding.Default.GetString(buffer2));
    num1 += 5;
    }
    }
    catch
    {
    builder1.Append(InputString.Substring(num1, 1));
    }
    }
    else
    {
    builder1.Append(InputString.Substring(num1, 1));
    }
    }
    return builder1.ToString();
    }
    private static int HexToDec(string hex)
    {
    int num1 = 0;
    string text1 = "0123456789ABCDEF";
    for (int num2 = 0; num2 < hex.Length; num2++)
    {
    if (text1.IndexOf(hex[num2]) == -1)
    {
    return -1;
    }
    num1 = (num1 * 0x10) + text1.IndexOf(hex[num2]);
    }
    return num1;
    }  ////outlook编码static string Base64ToText(string base64String, Encoding code)
      {
        byte [] bs;
        try
        {
          bs = Convert.FromBase64String(base64String);
        }
        catch (ArgumentNullException)
        {
          return "Base 64 string is null.";
        }
        catch (FormatException)
        {
          return "Base 64 string length is not 4 or is not an even multiple of 4.";
        }    char [] chars = new char [code.GetCharCount(bs, 0, bs.Length)];
        code.GetChars(bs, 0, bs.Length, chars, 0);
        return new string(chars);
      }