2010-10-25 38 views
27

Chúng tôi đã tạo một hệ thống cho phép nhúng hình ảnh vào email gửi đi.Cách tạo email có hình ảnh nhúng tương thích với hầu hết ứng dụng thư khách

Đây là thông báo ban đầu mà hệ thống của chúng tôi tạo. Ví dụ này chứa tệp đính kèm hình ảnh và hình ảnh được nhúng.

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-- 

Có tiêu đề nào khác tôi nên thêm hoặc quy tắc tôi nên theo dõi không?

Tôi nhận thấy một điều ... Tôi đoán rằng đó là một phần vấn đề của tôi và một phần Gmails. nhưng ở mức nào tôi muốn làm cho nó dừng xảy ra

Khi email được nhận vào Gmail tôi nhận được

hình ảnh không được hiển thị.
Hiển thị hình ảnh dưới đây - Luôn hiển thị ảnh từ ...

Hình ảnh nhúng sau đó được hiển thị dưới dạng đính kèm hình ảnh (giống như tập tin đính kèm hình ảnh khác của tôi)

tôi bấm hiển thị hình ảnh dưới đây và hình ảnh của tôi là được hiển thị trong nội dung của email nhưng không bị xóa khỏi phần Tệp đính kèm.

Nếu tôi quay lại hộp thư của mình và quay lại email, có vẻ như nó ổn.

Tôi không hiểu tại sao điều đó lại xảy ra. Nó không phải là hình ảnh được liên kết (từ URL bên ngoài) và nó không xảy ra khi gửi hình ảnh được nhúng từ Gmail đến Gmail. Đó là những gì làm cho tôi nghĩ rằng tôi có thể làm một cái gì đó sai trái và tôi sợ rằng nó có thể ảnh hưởng đến người nhận khác.

+2

'được nhúng 'không phải là Bố cục nội dung hợp lệ. Nó phải là 'inline' hoặc' attachment'. – dkarp

Trả lời

28

Tôi đã thành công với chính xác các tiêu đề giống như bạn đang sử dụng, với những khác biệt sau:

+6

Cảm ơn thông tin @Jan.Điều chính tôi đã mất là đặt cid vào các dấu ngoặc nhọn trong tiêu đề Content-ID của phần MIME, như sau: 'Content-ID: <[email protected]>' trong khi vẫn sử dụng phiên bản có sẵn trong HTML như sau: ''. Điều đó giải quyết được vấn đề cho tôi trong ứng dụng khách Gmail. – Guss

+7

Điều khác mà mọi người cần quan tâm là đối với Hotmail, ' 'sẽ KHÔNG hoạt động. Thay vào đó, bạn phải sử dụng ' '. –

+5

@EarthEngine Hãy cho tôi một chút để xem những gì bạn có nghĩa là: sử dụng dấu nháy đơn thay vì dấu ngoặc kép. – ctbrown

2

Tôi gặp sự cố khi tải hình ảnh nội dòng trong Gmail và tôi thấy rằng tôi đã sử dụng sai thư viện PEAR Mail_Mime trong PHP. Như đã lưu ý, Content-ID phải được định dạng như một id tin nhắn. Thư viện PEAR Mail_Mime sẽ cố gắng thêm một domainID vào Content-ID của bạn nếu một ID không được cung cấp. Nó cũng sẽ cố gắng regex thay thế các Content-ID này trong phần nội dung HTML của email để duy trì liên kết. Trong trường hợp của tôi, bước này đã thất bại, điều này đã làm hỏng liên kết từ thẻ HTML đến tệp đính kèm MIME. Vì vậy, nó là hoàn toàn chính xác cho Gmail từ chối hiển thị hình ảnh nội tuyến. Tuy nhiên, nó đã hiển thị hình ảnh dưới dạng tệp đính kèm.

Các vấn đề liên quan