我正在使用 OpenPop 库来阅读电子邮件。我遇到的问题是,在阅读电子邮件正文时,库修改了一个字符。
请参阅以下示例:
邮件正文:
Diseño
C# 代码:
OpenPop.Pop3.Pop3Client objPOP3 = new OpenPop.Pop3.Pop3Client();
OpenPop.Mime.Message message = default(OpenPop.Mime.Message);
OpenPop.Mime.MessagePart plainTextPart = default(OpenPop.Mime.MessagePart);
string bodyMailTxt = "";
objPOP3.Connect(Host, Port, UseSSL);
objPOP3.Authenticate(User, Password);
message = objPOP3.GetMessage(1);
plainTextPart = message.FindFirstPlainTextVersion();
bodyMailTxt = plainTextPart.GetBodyAsText();
代码 vb:
Dim objPOP3 As New OpenPop.Pop3.Pop3Client
Dim message As OpenPop.Mime.Message
Dim plainTextPart As OpenPop.Mime.MessagePart
Dim bodyMailTxt As String = ""
ObjPOP3.Connect(Host, Port, UseSSL)
ObjPOP3.Authenticate(User, Password)
message = objPOP3.GetMessage(1)
plainTextPart = message.FindFirstPlainTextVersion()
bodyMailTxt = plainTextPart.GetBodyAsText()
bodyMailTxt
值为“Diseãf±o”,它用 f(拉丁文小写字母 F)替换了 ƒ(带钩的拉丁文小写字母 F) .
我必须做些什么才能避免这种情况发生?
最佳答案
通过查看 OpenPop.Mime.MessagePart
类的源代码,它看起来像 plainTextPart.GetBodyAsText()
,正在获取这样的文本,返回 BodyEncoding.GetString(Body)
,其中 BodyEncoding
是 Encoding
类型的公共(public)属性,Body
是包含消息的原始字节数组。
我不知道,也无法真正测试,但可能是消息用于解码文本的默认编码与用于发送文本的编码不同。您可以通过尝试 plainTextPart.Encoding = Encoding.ASCII
或 plainTextPart.Encoding = Encoding.UTF8
或 plainTextPart.Encoding 查看得到的结果= Encoding.Unicode
在调用 .GetBodyAsText()
方法之前。
MessagePart 源文件链接:
关于c# - OpenPop.NET - 修改电子邮件中的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13385831/