这与我们使用的邮件工具有关:MailBee,它非常易于使用。从MailBee读取.eml文件时的编码问题
- 我们创建一个邮件(如果需要定义邮件正文和附件)
- 我们创建联系人列表和它添加到一个DataTable
- 我们称之为的MailBee的这产生.eml文件AddJob方法ANSI格式
- 书面文件完成后,我们读文件,并使用找到
To:
字符串:Match match = Regex.Match(recipient, @"""(.*?)"" <(.*?)>");
该值似乎是base64编码。这是我的代码来单元测试解析。
[TestClass]
public class UnitTest1
{
[TestMethod]
public void TestMethod1()
{
TestMethods.DecodeString("To: \"=?utf-8?B?QWJkdXJyYWhpbSDvv716Z2Vub2dsdQ==?=\" <[email protected];;>");
// This results in "Abdurrahim �zgenoglu" while it should be "Abdurrahim Özgenoglu"
}
}
public class TestMethods {
public static string DecodeString(string stringToDecode)
{
Match base64Match = Regex.Match(stringToDecode, @"=\?utf-8\?B\?(.*)\?=");
if (base64Match.Success)
{
string encodedName = base64Match.Groups[1].Value;
byte[] bytes = Convert.FromBase64String(encodedName);
return Encoding.UTF8.GetString(bytes);
}
return stringToDecode;
}
}
有什么建议可能会在这里出错?我怀疑MailBee在将文本转换为base64之前所做的一些事情。但我无法证实这一点。
我以前试过,但后来我得到了?而不是怪异的符号:'Abdurrahim ??? zgenoglu'。据我了解,该文件确实在ANSI中,但base64编码源自UTF8。 – Peter
我必须纠正自己,两个解决方案都会返回'Abdurrahimï¿ – Peter