2016-06-19 3 views
1

私に同行してください。長い話があります。 Delphi-7からプログラム的にHTML電子メールを作成し、Outlookに送信し、その中に画像を表示しないため、そのことについて何も知らない場合は、すべて読んでください。イメージファイルのある場所をOutlookに伝える方法は?

私は、Delphi-7プログラムからOutlookに可変テキストの電子メールを送信するアプリケーションを持っています。私はTMailInfoアイテムを使用しています。レイアウト用にテンプレートHTMLファイルを使用し、プレースホルダをプログラムのデータで置き換えます(%NAME%は "Johnson"となります)。新しいOutlookメッセージを作成し、HTMLbodyに結果を移入します。これらはすべて正常に動作します。

最近私のクライアントから新しいサンプルメッセージが送られてきました。このメールを新しいレイアウトに変更することができるかどうか尋ねました。だから私は電子メールをHTML(Outlookから、私のような非HTMLの達人にはほとんど理解できない巨大なHTMLファイルを生成する)として保存し、静的データを私のプレースホルダに置き換えて、新しいテンプレート。

これは、1つのことを除いてはうまくいきました。新しいレイアウトにはローカルの写真がいくつか含まれていました(パブリックウェブリソースからは利用できません)。 Outlookからの元のサンプルメールが作成されたとき、htmlファイルには "Subject"という名前のhtmファイルと、 "subject_files"というフォルダがあり、画像ファイルとfilelist.xmlとmsoファイルが含まれています。

生成されたHTMLは、SRC =「subject_files/image001.jpg」として絵を指し>など

私はOutlookにHTMLを送信すると、それは明らかにイメージがあるないアイデアを持っていない - しかし、どのように私はやります彼に伝えて?

  • は、いくつかの形式での画像へのリンクをハードコーディング "subject_files" フォルダに "マイドキュメント"

  • (すなわち

SRCをコピー:私が試した何

= "C:/test/subject_files/image001.jpg"、

src = "C:// test/subject_fiレ/ image001.jpg」、

SRC = "C:\テスト\ subject_files \ image001.jpg"、

など

が、両方が動作しません...ので、私の質問は実際には、HTMLメッセージをプログラム的に作成するときにOutlookにイメージファイルを探す場所を教えてください。

ありがとうございます!

答えて

3

メールが届くと、受信者はコンピュータにアクセスできなくなり、画像はメールに表示されなくなります。あなたができる電子メールで画像を送信するには:

使用abosluteのようなものに、オンライン、あなたは多くのウェブサイトを見つけることができBASE64にあなたのイメージを変換し

<img src="http://www.example.com/images/header.jpg"> 

使用埋め込まれた画像

リンク https://www.base64-image.de/

<img src="data:image/jpg;base64,/*base64-generated-string*/" /> 
+1

第3の選択肢は、画像に「Content-ID」値が割り当てられた電子メールに画像を添付することです。そして、HTMLは ''を使ってそれらの添付ファイルを参照することができます。 –

+0

オプション番号2はOutlookでは機能しません.HTMLメッセージはOutlookではなくWordによってレンダリングされ、src = "data:image"イメージは認識されません。 –

1

Remyが述べたように、イメージは通常の添付ファイルとして追加できます。 Attachment.PropertyAccessor.SetPropertyを使用してPR_ATTACH_CONTENT_IDプロパティ(DASL名http://schemas.microsoft.com/mapi/proptag/0x3712001F)を設定する必要があります。 HTML本体では、cid属性の一致値 - <img src="cid:xyz">を使用する必要があります。ここで、 "xyz"はPR_ATTACH_CONTENT_IDプロパティの値です。

+0

ありがとうございますが、これはとてもマイクロソフトのものです...不必要に複雑で、おそらくエッジの場合には非常に便利ですが、非常に単純なユースケースではわかりません...私は「公にホストされた」ルートに行きます。それにもかかわらず、ありがとう! – Jur

+0

ここでは何も複雑なことはありません - それはOutlookと他のすべての電子メールクライアントが何年も何年もこのようにしたことです。 –

関連する問題