掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
TIdMessageコンポーネントで、2行以上あるSubjectを正しく取得するには (ID:3291)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
たまには質問側に。 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を簡単に取り出す方法はありませんか。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.