c# - OpenPop.NET - 修改电子邮件中的字符

标签 c# vb.net pop3 openpop

我正在使用 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),其中 BodyEncodingEncoding 类型的公共(public)属性,Body 是包含消息的原始字节数组。

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

MessagePart 源文件链接:

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

关于c# - OpenPop.NET - 修改电子邮件中的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13385831/

相关文章:

c# - The Service Locator Pattern In C#的相关测试

c# - 为什么要使用MVVM? [复制]

vb.net - 从 VB.NET 中的字符串中删除空格

c# - 如何使用 ComboBox SelectionChanged 事件更改 StackPanel 颜色?

vb.net - Visual Studio Online 无法在构建服务器上的类库中找到类中的函数

c# - 使用 C# 捕获 MS Word 的按键事件

c# - 在 .NET 中寻找简单的规则引擎库

java - 使用 JavaMail 访问 Mailinator POP3

c# - OpenPop : how can I turn off DEBUG printing?

email - 为什么仍在使用 POP3 协议(protocol)?