c# - POP3接收邮件编码C#

标签 c# email encoding pop3

我使用 POP3 接收电子邮件。但是编码错误,例如,电子邮件的主题“主题”变成了“染婚”。中文错误,strong text 当文本的内容语言为英文时,没有错误。谁能告诉我,我该怎么做呢?代码如下:

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;
}

最佳答案

我不确定您使用的是什么 POP3 库,但它显然已损坏,除了切换到另一个 POP3 库(例如我的 MailKit)之外,您无法“修复”您的代码以使其正常工作。这是唯一一个在所有情况下都能正确处理字符集的库(大多数情况下可以正确处理 Latin1,但对于 CJK 字符集则完全失败)。

大多数客户端因 Latin1 (ISO-8859-1) 之外的任何内容而中断的原因是大多数电子邮件库具有仅适用于字符串的解析器。为了将消息数据从字节转换为字符串,他们需要选择 System.Text.Encoding(大多数选择 ISO-8859-1)。他们假定电子邮件消息遵循各种 RFC 中概述的规则,这些规则将电子邮件 header 限制为 US-ASCII,但客户忽略这些规则非常很常见。

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

关于c# - POP3接收邮件编码C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25946430/

相关文章:

c# - ScrollView 在 Xamarin Forms 中的另一个 ScrollView 中

c# - 在 using 指令 ​​ "using Accord.Video.FFMPEG"中,命名空间中不存在 FFMPEG

iphone - 如何在 iPhone 应用程序的 Composer 表中添加 vcardfile

macos - NSSharingService 在默认电子邮件 MAC OSX 应用程序中设置抄送和密件抄送收件人

xml - 如何设置log4j 2.3版编码

ruby-on-rails - 如果在 Ruby 中包含 "+"到 %2B,如何对电子邮件进行编码

c# - 如何发布到 Facebook 用户的个人资料?

c# - 来自 Connection 的希伯来语

c# - 如何测试发送多封邮件?

java - 在文件名中使用unicode字符在linux Tomcat下创建文件