POP3接收电子邮件编码 C#

4
我使用POP3来接收邮件。但是,出现了编码错误,例如电子邮件的主题“主题”变成了“涓婚”。当文本内容的语言为英语时,强调文本中没有错误。有谁能告诉我该怎么办?下面是代码:
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;
}

请提高您的问题质量。我们需要更多信息,请展示您已经完成的研究。谢谢。 - krisdyson
2
据我所记,C# 中没有直接支持 POP3 的功能。那么这个 POP3 类是从哪里来的呢? - ferc
1个回答

15

我不确定你正在使用哪个POP3库,但很明显它是有问题的,除了切换到另一个POP3库(例如我的MailKit库)之外,你无法通过“修复”代码使其工作。

大多数客户端在Latin1(ISO-8859-1)以外的所有内容都会出问题的原因是,大多数电子邮件库具有仅适用于字符串的解析器。为了将消息数据从字节转换为字符串,它们需要选择一个System.Text.Encoding(大多数选用ISO-8859-1)。它们假设电子邮件消息遵循各种RFC中概述的限制电子邮件头部为US-ASCII的规则,但是客户端通常忽略这些规则。

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


6
问题是,我希望写一个免费的 MIT 许可证库的人能够监督这些类型的问题,并可能是最好回答它们的人。他们恰恰是那些了解这些东西的人。所以......为什么要打压他呢?规则要管的。如果他没有帮助,请释放狗狗。不过要有些判断力,好吗? - Pete Duncanson
为什么我的评论被删除了? - gianmt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接