2015-05-20 64 views
8

Cách chính xác để tạo HTML-Email với các tệp đính kèm nội tuyến và các tệp đính kèm không phải là nội tuyến là gì?HTML-Email với các tệp đính kèm nội tuyến và các tệp đính kèm không phải nội dòng

Ngoài ra, vui lòng cho tôi biết Loại nội dung để sử dụng chỉ với các tệp đính kèm nội tuyến và chỉ với các tệp đính kèm không phải nội tuyến.

Cho đến bây giờ tôi đã làm điều đó như thế này:

MIME-Version: 1.0 
[some more headers] 
Content-type: multipart/mixed; 
boundary="myboundary" 
--myboundary 
Content-Type: text/html; charset=ISO-8859-15 
Content-Transfer-Encoding: 7bit 

[html with img cid:my_image] 

--myboundary 
Content-Type: image/png; 
name="my_image.png" 
Content-Transfer-Encoding: base64 
Content-ID: <my_image> 
Content-Disposition: inline; 
filename="my_image.png" 

[base64 image data] 

--myboundary 
Content-type:application/pdf; 
    name="my_pdf.pdf" 
Content-length:1150 
Content-Transfer-Encoding: base64 
Content-ID: <my_pdf.pdf> 
Content-Disposition: attachment; 
filename="my_pdf.pdf" 

[base64 pdf data] 

--myboundary-- 

Các email có vẻ tốt trong quan điểm. Nhưng tôi nhận thấy rằng Thunderbird không hiển thị hình ảnh nội tuyến của tôi và hiển thị 2 tệp đính kèm thay thế (Hình ảnh của tôi và tệp PDF của tôi). Vì vậy, tôi đã làm một số gỡ lỗi và nhận thấy rằng hình ảnh nội tuyến nên được sended qua Content-Type: multipart/related.

Vì vậy, tôi đã thay đổi Content-Type: multipart/mixed thành Content-Type: multipart/related và Thunderbird hiển thị chính xác: Hình ảnh được hiển thị bằng html và một tệp đính kèm, PDF được hiển thị.

Tôi không phải shure nếu đây là giải pháp chính xác mặc dù nó có vẻ hoạt động. Có đúng không khi sử dụng multipart/related luôn luôn (trong trường hợp nếu tôi có tệp đính kèm nội tuyến và không phải nội tuyến, trong trường hợp nếu tôi chỉ có tệp đính kèm nội tuyến và trong trường hợp nếu tôi chỉ có các tệp đính kèm không phải nội tuyến)? Hoặc là cách chính xác để sử dụng một ranh giới loại liên quan đến việc chia nhỏ các tệp đính kèm nội tuyến và một ranh giới khác của loại hỗn hợp để tách các tệp đính kèm không phải là nội tuyến không? Không.

Tôi hy vọng bạn có thể cung cấp cho tôi một mẫu để

  1. Email với inline chỉ file đính kèm
  2. Email với phi inline chỉ file đính kèm
  3. Email với nội tuyến và phi inline file đính kèm
+0

tôi đã viết một câu trả lời với một câu hỏi tương tự và tạo ra một ascii nghệ thuật để giải thích các trả lời: http://stackoverflow.com/a/40420648/633961 – guettli

Trả lời

15

Hình ảnh

Có, nó là cách tiếp cận đúng để sử dụng multipart/related loại nội dung.Dưới đây là một ví dụ (xin lưu ý 'Content-Type' và giá trị 'Content-Disposition'):

enter image description here

Example source and detailed info

Dưới đây là mẫu bạn đã yêu cầu:

  1. Email chỉ với các tệp đính kèm nội tuyến
  2. Email có tệp đính kèm không chỉ nội tuyến
  3. Email có nội tuyến và không phải là inl file đính kèm ine

Mẫu 1: inline chỉ

enter image description here

Subject: Test 01: inline only 
To: Renat Gilmanov 
Content-Type: multipart/related; boundary=089e0149bb0ea4e55c051712afb5 

--089e0149bb0ea4e55c051712afb5 
Content-Type: text/html; charset=UTF-8 
Content-Transfer-Encoding: quoted-printable 

<div dir=3D"ltr">Lorem ipsum dolor sit amet, consectetur adipiscing elit. P= 
ellentesque odio urna, bibendum eu ultricies in, dignissim in magna. Vivamu= 
s risus justo, viverra sed dapibus eu, laoreet eget erat. Sed pretium a urn= 
a id pulvinar.<br><br><img src=3D"cid:ii_ia6yo3z92_14d962f8450cc6f1" height= 
=3D"218" width=3D"320"><br>=E2=80=8B<br>Cras eu velit ac purus feugiat impe= 
rdiet nec sit amet ipsum. Praesent gravida lobortis justo, nec tristique ve= 
lit sagittis finibus. Suspendisse porta ante id diam varius, in cursus ante= 
luctus. Aenean a mollis mi. Pellentesque accumsan lacus sed erat vulputate= 
, et semper tellus condimentum.<br><br>Best regards<br></div> 

--089e0149bb0ea4e55c051712afb5 
Content-Type: image/png; name="test-01.png" 
Content-Disposition: inline; filename="test-01.png" 
Content-Transfer-Encoding: base64 
Content-ID: <ii_ia6yo3z92_14d962f8450cc6f1> 
X-Attachment-Id: ii_ia6yo3z92_14d962f8450cc6f1 

iVBORw0KGgoAAAANSUhEUgAAAUAAAADaCAYAAADXGps7AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz 
AAALewAAC3sBSRnwgAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAALnSURB 
... 
QCDLAIEsAwSyDBDIMkAgywCBLAMEsgwQyDJAIMsAgSwDBLIMEMgyQCDLAIEsAwSyDBDIMkAg6wK+ 
4gU280YtuwAAAABJRU5ErkJggg== 
--089e0149bb0ea4e55c051712afb5-- 

Mẫu 2: chỉ có file đính kèm

enter image description here

Subject: Test 02: only attachments 
To: Renat Gilmanov 
Content-Type: multipart/mixed; boundary=047d7b41cc5c82ae5d051712c40c 

--047d7b41cc5c82ae5d051712c40c 
Content-Type: text/plain; charset=UTF-8 

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque 
odio urna, bibendum eu ultricies in, dignissim in magna. Vivamus risus 
justo, viverra sed dapibus eu, laoreet eget erat. Sed pretium a urna 
id pulvinar. 

Cras eu velit ac purus feugiat imperdiet nec sit amet ipsum. Praesent 
gravida lobortis justo, nec tristique velit sagittis finibus. 
Suspendisse porta ante id diam varius, in cursus ante luctus. Aenean a 
mollis mi. Pellentesque accumsan lacus sed erat vulputate, et semper 
tellus condimentum. 

Best regards 

--047d7b41cc5c82ae5d051712c40c 
Content-Type: image/png; name="test-02.png" 
Content-Disposition: attachment; filename="test-02.png" 
Content-Transfer-Encoding: base64 
X-Attachment-Id: f_ia6yvl4b0 

iVBORw0KGgoAAAANSUhEUgAAAUAAAADaCAYAAADXGps7AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz 
AAALewAAC3sBSRnwgAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAALnSURB 
... 
gECWAQJZBghkGSCQZYBAlgECWQYIZBkgkGWAQJYBAlkGCGQZIJBlgECWAQJZBghkGSCQZYBA1gWV 
ywTWDU1tpwAAAABJRU5ErkJggg== 
--047d7b41cc5c82ae5d051712c40c-- 

Mẫu 3: inline và file đính kèm

enter image description here

Subject: Test 03: inline and attachments 
To: Renat Gilmanov 
Content-Type: multipart/mixed; boundary=001a11c24d809f1525051712cc78 

--001a11c24d809f1525051712cc78 
Content-Type: multipart/related; boundary=001a11c24d809f1523051712cc77 

--001a11c24d809f1523051712cc77 
Content-Type: text/html; charset=UTF-8 
Content-Transfer-Encoding: quoted-printable 

<div dir=3D"ltr">Lorem ipsum dolor sit amet, consectetur adipiscing elit. P= 
ellentesque odio urna, bibendum eu ultricies in, dignissim in magna. Vivamu= 
s risus justo, viverra sed dapibus eu, laoreet eget erat. Sed pretium a urn= 
a id pulvinar.<br><br><img src=3D"cid:ii_ia6yyemg0_14d9636d8ac7a587" height= 
=3D"218" width=3D"320"><br>=E2=80=8B<br>Cras eu velit ac purus feugiat impe= 
rdiet nec sit amet ipsum. Praesent gravida lobortis justo, nec tristique ve= 
lit sagittis finibus. Suspendisse porta ante id diam varius, in cursus ante= 
luctus. Aenean a mollis mi. Pellentesque accumsan lacus sed erat vulputate= 
, et semper tellus condimentum.<br><br>Best regards</div> 

--001a11c24d809f1523051712cc77 
Content-Type: image/png; name="test-01.png" 
Content-Disposition: inline; filename="test-01.png" 
Content-Transfer-Encoding: base64 
Content-ID: <ii_ia6yyemg0_14d9636d8ac7a587> 
X-Attachment-Id: ii_ia6yyemg0_14d9636d8ac7a587 

iVBORw0KGgoAAAANSUhEUgAAAUAAAADaCAYAAADXGps7AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz 
AAALewAAC3sBSRnwgAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAALnSURB 
... 
QCDLAIEsAwSyDBDIMkAgywCBLAMEsgwQyDJAIMsAgSwDBLIMEMgyQCDLAIEsAwSyDBDIMkAg6wK+ 
4gU280YtuwAAAABJRU5ErkJggg== 
--001a11c24d809f1523051712cc77-- 
--001a11c24d809f1525051712cc78 
Content-Type: image/png; name="test-02.png" 
Content-Disposition: attachment; filename="test-02.png" 
Content-Transfer-Encoding: base64 
X-Attachment-Id: f_ia6yymei1 

iVBORw0KGgoAAAANSUhEUgAAAUAAAADaCAYAAADXGps7AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz 
AAALewAAC3sBSRnwgAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAALnSURB 
... 
gECWAQJZBghkGSCQZYBAlgECWQYIZBkgkGWAQJYBAlkGCGQZIJBlgECWAQJZBghkGSCQZYBA1gWV 
ywTWDU1tpwAAAABJRU5ErkJggg== 
--001a11c24d809f1525051712cc78-- 

Nhanh chóng tóm tắt

  1. Inline chỉ file đính kèm: sử dụng multipart/related
  2. Non-inline chỉ file đính kèm: sử dụng multipart/mixed
  3. Inline và file đính kèm không inline sử dụng multipart/mixedmultipart/related

Cập nhật

Đây là một bài viết rất thú vị: Using Images in HTML Email

+0

cảm ơn đầu tiên cho trả lời của bạn. Vui lòng sửa tôi nếu tôi sai, những gì tôi hiểu từ câu trả lời của bạn là trong trường hợp cả hai: các phần đính kèm nội tuyến và không phải nội tuyến, tôi phải sử dụng cả hai, một ranh giới 'multipart/mixed' AND' multipart/related'. Hỗn hợp có các phần sau: 1. HTML-Mail bao gồm các phần đính kèm có liên quan và 2. Tệp đính kèm không nội tuyến thứ nhất 3. Tệp đính kèm không phải nội tuyến thứ hai ... Phần 1 được tự tách ra bởi ranh giới liên quan. – steven

+0

Có lẽ bạn nên cải thiện câu trả lời của mình một chút. Bạn có thể loại bỏ phần mà bạn giải thích rằng pdf nên được gửi qua ứng dụng kiểu nội dung/pdf vì nó không phải là một phần của câu hỏi. Câu hỏi chỉ là về các loại nội dung biên. Và nó sẽ là tốt đẹp để đưa ra ba ví dụ như mẫu cuối cùng của bạn thay vì: 1. tập tin đính kèm hình ảnh chỉ, 2. không trực tuyến tập tin đính kèm chỉ và 3. cả hai, nội tuyến và không trực tuyến đính kèm (đây là những gì mẫu của bạn cho thấy, ngay bây giờ) nhưng bạn có thể xóa phần 'multipart/alternative' vì nó không phải là một phần của câu hỏi. – steven

+0

Tôi sẽ cung cấp câu trả lời cho câu trả lời của bạn nếu bạn cải thiện nó một chút như tôi đã giải thích. Tôi hy vọng bạn xác nhận ý định của tôi để cung cấp một mẫu cho cả ba biến thể. Vì vậy, tôi hy vọng sẽ giúp để hiểu những thứ ranh giới mà không phải là dễ dàng như vậy để có được bằng cách đọc các RFC. Cảm ơn nhiều. – steven

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