2

OpenPop ライブラリを使用して電子メールを読んでいます。メールの本文を読むときに、ライブラリが文字を変更するという問題があります。次の例を参照してください:

メール本文:

ディセニョ

コード 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) に置き換えたものです。
これが起こらないようにする必要がありますか?

4

1 に答える 1

0

OpenPop.Mime.MessagePartクラスのソースを見ると、が次のようなplainTextPart.GetBodyAsText()テキストを取得している ように見えます。return BodyEncoding.GetString(Body)BodyEncodingEncodingBody

わかりませんし、実際にテストすることもできませんが、メッセージがテキストをデコードするために使用しているデフォルトのエンコーディングが、テキストの送信に使用されたものと同じではない可能性があります。メソッドを呼び出す前にplainTextPart.Encoding = Encoding.ASCII、または plainTextPart.Encoding = Encoding.UTF8、またはを試してみると、どのような結果が得られるかを確認できる場合があります。plainTextPart.Encoding = Encoding.Unicode.GetBodyAsText()

MessagePart ソース ファイルへのリンク:

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

于 2012-11-14T22:56:15.640 に答える