【发布时间】:2014-04-15 17:55:09
【问题描述】:
这与我们使用的邮寄工具有关:MailBee,它非常易于使用。
- 我们创建一个邮件(如果需要,定义邮件正文和附件)
- 我们创建一个联系人列表并将其添加到数据表中
- 我们调用 MailBee 的 AddJob 方法,该方法生成 ANSI 格式的 .eml 文件
- 写入文件完成后,我们读取文件并找到
To:字符串使用:Match match = Regex.Match(recipient, @"""(.*?)"" <(.*?)>");
这个值似乎是 base64 编码的。这是我对解析进行单元测试的代码。
[TestClass]
public class UnitTest1
{
[TestMethod]
public void TestMethod1()
{
TestMethods.DecodeString("To: \"=?utf-8?B?QWJkdXJyYWhpbSDvv716Z2Vub2dsdQ==?=\" <email@somehost.com;;>");
// 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 之前所做的事情。但我无法验证。
【问题讨论】: