1. ホーム
  2. html

[解決済み] htmlメールに画像を埋め込む

2022-05-15 12:02:04

質問

gif 画像を埋め込んだ multipart/ 関連 html メールを送信しようとしています。 この電子メールは、Oracle PL/SQL を使用して生成されています。 私の試みは失敗し、画像は赤い X として表示されました (Outlook 2007 と yahoo メール)。

私はしばらくの間、html メールを送信していましたが、私の要件は、メール内でいくつかの gif 画像を使用することです。 これらを Web サーバーの 1 つに保存してリンクするだけでよいのですが、多くのユーザーのメール クライアントはそれらを自動的に表示しないため、設定を変更するか、各メールごとに手動でダウンロードする必要があります。

そこで、私の考えは、画像を埋め込むことです。 質問は以下のとおりです。

  1. 私はここで何が間違っているのですか?
  2. 埋め込みの方法は正しいのでしょうか?
  3. もっと多くの画像を使用する必要がある場合、他の選択肢はありますか? 画像は通常、ロゴやアイコンであり、メッセージの文脈からは意味をなさないので、添付はうまくいきません。 また、電子メールの一部の要素はオンライン システムへのリンクなので、静的な PDF を生成して添付してもうまくいきません (私の知る限りでは、とにかく)。

のスニペットです。

MIME-Version: 1.0
To: [email protected]
BCC: [email protected]
From: [email protected]
Subject: Test
Reply-To: [email protected]
Content-Type: multipart/related; boundary="a1b2c3d4e3f2g1"

--a1b2c3d4e3f2g1

content-type: text/html;

    <html>
    <head><title>My title</title></head>
    <body>
    <div style="font-size:11pt;font-family:Calibri;">
    <p><IMG SRC="cid:my_logo" alt="Logo"></p>

... more html here ...

</div></body></html> 

--a1b2c3d4e3f2g1

Content-Type: image/gif;
Content-ID:<my_logo>
Content-Transfer-Encoding: base64
Content-Disposition: inline

[base64 image data here]

--a1b2c3d4e3f2g1--

ありがとうございます。

ところで:はい、私はhtml自体に画像を埋め込むことができ(ヘッダーデータを作成するために使用する同じアルゴを使用して)、Firefox / IEで画像を参照してください、私はbase64データが正しいことを確認しました。

また、これはスパム用ではなく、メールは毎日期待している特定のクライアントに送信されることに留意すべきです。 コンテンツはデータ駆動型であり、広告ではありません。

どのように解決するのですか?

直接挿入してみてください。この方法では、メール内のさまざまな場所に複数の画像を挿入することができます。

<img src="data:image/jpg;base64,{{base64-data-string here}}" />

そして、この投稿が他の人にとっても有益なものになるように。 もし、base64-dataの文字列を持っていない場合は、以下で簡単に作成することができます。 http://www.motobit.com/util/base64-decoder-encoder.asp で画像ファイルから簡単に作成できます。

メールのソースコードはこのような感じですが、この境界線が何のためにあるのかはわかりません。

 To: [email protected]
 Subject: ...
 Content-Type: multipart/related;
 boundary="------------090303020209010600070908"

This is a multi-part message in MIME format.
--------------090303020209010600070908
Content-Type: text/html; charset=ISO-8859-15
Content-Transfer-Encoding: 7bit

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-15">
  </head>
  <body bgcolor="#ffffff" text="#000000">
    <img src="cid:part1.06090408.01060107" alt="">
  </body>
</html>

--------------090303020209010600070908
Content-Type: image/png;
 name="moz-screenshot.png"
Content-Transfer-Encoding: base64
Content-ID: <part1.06090408.01060107>
Content-Disposition: inline;
 filename="moz-screenshot.png"

[base64 image data here]

--------------090303020209010600070908--

//EDIT: そういえば、thunderbirdでメールを書くために、私の投稿の最初のコードスニペットを挿入すると、thunderbirdは自動的にhtmlコードを私の投稿の2番目のコードとほとんど同じに見えるように変更することに気づきました。