TIdMessageコンポーネントで、2行以上あるSubjectを正しく取得するには

解決


にしの  2003-04-09 07:47:49  No: 3291

たまには質問側に。

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を簡単に取り出す方法はありませんか。


にしの  2003-04-09 09:00:12  No: 3292

自己レス。
DelphiMLを検索してみたらありました。

http://www.geocities.jp/will2bb/indy.htm


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加