Content-ID(cid:)画像を含むhtmlを表示するには


蒲鉾太郎  2007-05-07 06:18:10  No: 26042

はじめまして、お世話になります。
メールソフトみたいなもの(現在は受信機能のみ)を作っています。
最近増えているhtmlメールの表示機能を実現すべく、下記を参考にして(そのまま使っただけですが)
TWebBrowserを使用して作成しました。
https://www.petitmonte.com/bbs/answers?question_id=2356
https://www.petitmonte.com/bbs/answers?question_id=3073
ほとんどのhtmlメールは表示OKだったのですが、
一部のhtmlメールが画像リンク切れのような状態で表示されてしまいます。
原因を調べてみたところ、画像の指定が
<img src="cid:0056789086$edfgrew9ff000@sfsagfegdswee888a">という形式になっており、
Content-ID:という指定方法であることがわかりました。
画像データは、同じメール内に、multipart/alternativeのパートとしてbase64形式で存在しており、
その画像データを何らかの方法で、渡してあげればよさそうです。
ネットで検索すると
IInternetProtocol
IServiceProvider
IInternetProtocolSink
IInternetProtocolRoot
このあたりを駆使すると実現できそうな雰囲気なのは何となくわかったのですが
具体例が見つからず、お手上げ状態です。
Content-ID(cid:)画像を含むhtmlを表示する方法を教えていただけないでしょうか。


あの手この手ダレの手?  2007-05-07 21:46:00  No: 26043

受信したそのメールを適当な名前(拡張子は.emlか.mht)を付けて保存し、
そのファイルをWebBrowserで読み込めば組み込み画像も含めて表示できるけど...


蒲鉾太郎  2007-05-08 05:55:49  No: 26044

画像が入っているメールをエディタで加工して、IEに読み込ませたところ
ちゃんと画像が表示されるのは確認しました。
ただ、せっかくTMemoryStreamを使ってローカルファイルを作成せずにhtmlメールを表示しているので、ファイルを作成するのは美しくないですし、技術的な興味もありますし、ファイルを作成しない実現方法を知りたいのですが。


蒲鉾太郎  2007-05-19 06:51:17  No: 26045

なかなかレスが付きませんが、やはり結構難題なんでしょうか。
いちおう自力でどうにかできないか調べてはいるのですが、MSDNを見ても理解困難という状態です。
About Asynchronous Pluggable Protocols
http://msdn2.microsoft.com/en-us/library/Aa767916.aspx
今はここを何とか理解しようとしています。


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

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






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