2014-09-20 144 views
4

我使用POP3来接收电子邮件。但是编码错误,如电子邮件的主题“主题”变成了“不寻常”。中文错误,当文本内容为英文时强文本,无错误。谁能告诉我,我该怎么办?下面的代码:POP3接收电子邮件编码C#

POP3 pop = new POP3(); 
pop.Connect("userName", "password", "pop.126.com", 110);//smtp.126.com 
pop.DownloadMessages(); 
for (int i = 1; i < pop.Messages.Count; i++) 
{ 
    Email email = new Email(); 
    Message msg = pop.Messages[i]; 
    email.From = msg.From; 
    email.FromName = msg.FromName; 
    email.Body = msg.HTMLBody; 
    email.Title = msg.Subject; 
} 
+0

请提高您的问题的质量。我们需要更多信息,并请显示您已完成的研究。谢谢 – krisdyson 2014-09-20 07:43:55

+2

据我所知,在C#中没有对POP3的直接支持。 “POP3”课程从哪里来? – ferc 2014-09-20 08:59:15

回答

14

我不知道你使用的POP3库,但它显然是打破,没有什么可以做“修理”你的代码,使之超出切换到另一个POP3库工作,例如我的MailKit库,它是唯一能够在所有情况下正确处理字符集的库(大多数将处理拉丁文1好,但完全无法用于中日韩字符集)。

大多数客户端因拉丁语1(ISO-8859-1)之外的任何内容而断裂的原因是大多数电子邮件库都具有只能在字符串上工作的解析器。为了将消息数据从字节转换为字符串,他们需要选择System.Text.Encoding(并且大多数选择ISO-8859-1)。他们假定电子邮件遵循各种RFC中列出的将电子邮件标题限制为US-ASCII的规则,但它是非常常见的,客户可以忽略这些规则。

与其他解析器不同,MailKit的电子邮件解析器解析字节流,因此在开始解析消息之前不需要字符集转换。这允许解析器正确处理标题和正文中的混合字符集。

+6

事情是,我希望有一个人写一个免费的MIT许可证库来成为监控这些类型问题的人,并且可能是最好的回答他们的人。他们正是那些知道这些东西的人。所以...为什么要把他打倒。规则被诅咒。如果他没有帮助释放狗。使用一些判断虽然呃? – 2015-07-25 18:48:48

+0

为什么我的评论已被删除? – gianmt 2015-07-26 08:53:54