OpenPop.NET - 修改电子邮件中的角色

时间:2012-11-14 19:23:36

标签: c# vb.net pop3 openpop

我正在使用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)。
我不得不做到这一点不会发生?

1 个答案:

答案 0 :(得分:0)

通过查看OpenPop.Mime.MessagePart类的来源,看起来像plainTextPart.GetBodyAsText(),得到的文字是return BodyEncoding.GetString(Body),其中BodyEncoding是公共属性type EncodingBody是包含消息的原始字节数组的公共属性。

我不知道,我无法真正测试,但可能是消息用于解码文本的默认编码与用于发送文本的内容不同。在调用plainTextPart.Encoding = Encoding.ASCII方法之前,您可以尝试plainTextPart.Encoding = Encoding.UTF8plainTextPart.Encoding = Encoding.Unicode.GetBodyAsText()来查看获得的结果。

链接到MessagePart源文件:

http://hpop.svn.sourceforge.net/viewvc/hpop/trunk/OpenPop/Mime/MessagePart.cs?revision=377&view=markup