2010-10-25 73 views
27

我們創建了一個允許將圖像嵌入到傳出電子郵件中的系統。如何使用與大多數郵件客戶端兼容的嵌入式圖像創建電子郵件

這是我們的系統創建的原始消息。這個例子包含一個圖像附件和一個嵌入式圖像。

Mime-Version: 1.0 
From: ... 
To: ... 
CC: 
Subject: test 
x-sender: ... 
x-mailer: ... 
Content-Type: multipart/mixed; boundary="-------------...A128803765634794" 

---------------...A128803765634794 
Content-Type: multipart/related; boundary="-------------...B128803765634796" 

---------------...B128803765634796 
Content-Type: text/html; charset="UTF-8" 

<p style="margin: 0; padding: 0"><img src="cid:083.gif" alt="" /></p> 

---------------...B128803765634796 
Content-type: image/gif; name="083.gif" 
Content-ID: <083.gif> 
X-Attachment-Id: 083.gif 
Content-Disposition: Embedded; filename="083.gif" 
Content-transfer-encoding: base64 

............................................................................ 
............................................................................ 
...................................................... 
---------------PineappleCodeB128803765634796-- 
---------------PineappleCodeA128803765634794 
Content-type: image/gif; name="waiting.gif" 
Content-Disposition: Attachment; filename="waiting.gif" 
Content-transfer-encoding: base64 

............................................................................ 
............................................................................ 
...................................................... 
---------------PineappleCodeA128803765634794-- 

是否還有另一個標題我應該添加或規則我應該遵循?

我注意到一件事 ...我想這是我的問題和部分Gmail的一部分。但無論如何,我想使當電子郵件被接收到Gmail它阻止事情發生

我得到

圖像不顯示。
顯示圖像下方 - 始終顯示來自圖像...

嵌入圖像然後顯示爲圖像附件(就像我的其他圖像附件)

我單擊顯示圖像的下方,我的圖像是顯示在電子郵件的正文中,但未從附件部分刪除。

如果我回到我的箱子和回郵件,它看起來罰款。

我不明白它爲什麼這樣做。它不是鏈接的圖像(來自外部URL),並且在將嵌入圖像從Gmail發送到Gmail時不會發生。那是什麼讓我覺得我可能做錯了什麼,我擔心它可能會影響其他收件人。

+2

'embedded'不是有效的Content-Disposition。它必須是「內聯」或「附件」。 – dkarp 2011-01-14 20:39:29

回答

28

我已經爲你使用,但有以下區別有完全相同的頭成功:

+6

感謝您的信息@Jan。我缺少的主要原因是將cid放在MIME部分的Content-ID頭部的尖括號中,如下所示:'Content-ID:<[email protected]>'同時仍然使用非HTML中的繃帶版本如下所示:''。這爲GMail客戶端解決了我的問題。 – Guss 2011-12-01 21:23:56

+7

人們需要關注的另一件事是,對於Hotmail,「」將不起作用。您必須改用''。 – 2013-02-12 01:06:00

+5

@EarthEngine帶我瞭解一下你的意思:用單引號代替雙引號。 – ctbrown 2015-08-04 11:21:32

2

我在加載Gmail中的內嵌圖像時遇到了問題,我發現我錯誤地使用了PHP中的PEAR Mail_Mime庫。如前所述,Content-ID必須格式化爲消息ID。 PEAR Mail_Mime庫會嘗試將domainID添加到您的Content-ID(如果未提供)。 它還會嘗試用正則表達式替換電子郵件HTML正文中的這些Content-ID以維護鏈接。在我的情況下,這一步失敗了,最終打破了從HTML標籤到MIME附件的鏈接。因此,Gmail拒絕以內聯方式顯示圖像是完全正確的。它確實顯示圖像作爲附件。

相關問題