我正在使用OpenPop库来阅读电子邮件。我有一个问题,当阅读电子邮件的正文时,库会修改一个字符。
请参阅以下示例:
电子邮件正文:
DiseñØ
代码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 whit hook)。
我不得不做到这一点不会发生?
答案 0 :(得分:0)
通过查看OpenPop.Mime.MessagePart
类的来源,看起来像plainTextPart.GetBodyAsText()
,得到的文字是return BodyEncoding.GetString(Body)
,其中BodyEncoding
是公共属性type Encoding
和Body
是包含消息的原始字节数组的公共属性。
我不知道,我无法真正测试,但可能是消息用于解码文本的默认编码与用于发送文本的内容不同。在调用plainTextPart.Encoding = Encoding.ASCII
方法之前,您可以尝试plainTextPart.Encoding = Encoding.UTF8
,plainTextPart.Encoding = Encoding.Unicode
或.GetBodyAsText()
来查看获得的结果。
链接到MessagePart源文件: