たまには質問側に。
Delphi7にて、メーラを作成しようと思うのですが、ヘッダのデコードで困っています。
ひとまず、RetrieveRawで取得したメッセージをファイルに格納しておき、それを表示する際(そのままRetrieveしたあとでも同じなのですが)、msg.Subjectが変な感じになります。
たとえば、
Subject: =?ISO-2022-JP?B?W1lhaG9vIRskQiVHJWolUCE8GyhCXSAbJEI8K0YwPFYbKEI=?=
=?ISO-2022-JP?B?GyRCJSIlcyUxITwlSDxCO1xDZiEqIi4/Xj1xN3Qkcj9KRGgiLhsoQg==?=
は、
[Yahoo!デリバー] 自動車アンケート実施中!〓図書券を進呈〓
となるべきなのに、
[Yahoo!デリバー] 自動車 [Yahoo!デリバー] 自動車アンケート実施中!〓図書券を進呈〓
となります。つまり、1行目+(1行目+2行目)。3行だと、さらに増えます。
それならばと、Headers['subject']をとってくると、半角スペースで連結されており、そのままではデコードできません。これが改行コードならば、TStringListなどに入れて、
strlst[i] := jconvert.jis2sjis(jconvert.DecodeHeaderString(strlst[i]));
とし、それから連結してやればOKなのですが。
半角が元の改行位置として処理すると、今度はASCIIのみのSubjectで半角スペースがなくなってしまいます。
保存したメッセージは、(複合ストレージではありますが)*.emlファイルと同じ形式ですので、TIdMessageに限らず、Subjectを簡単に取り出す方法はありませんか。
自己レス。
DelphiMLを検索してみたらありました。
http://www.geocities.jp/will2bb/indy.htm
ツイート | ![]() |