2015-05-20 30 views
8

Qual è il modo corretto di creare un messaggio HTML con allegati inline e allegati non in linea?HTML-Email con allegati in linea e allegati non in linea

Inoltre, indichi quale tipo di contenuto utilizzare con solo allegati inline e con solo allegati non in linea.

Fino ad ora ho fatto in questo modo:

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

La posta guarda bene in prospettiva. Ma ho notato che Thunderbird non mostrava la mia immagine in linea e mostra invece 2 allegati (la mia immagine e il mio PDF). Così ho fatto un po 'di debug e ho notato che le immagini inline dovevano essere inviate tramite Content-Type: multipart/related.

Così ho cambiato Content-Type: multipart/mixed a Content-Type: multipart/related e Thunderbird visualizzato corretto: l'immagine è mostrata in html e un allegato, il PDF è mostrato.

Non sono sicuro se questa è la soluzione corretta anche se sembra funzionare. È corretto utilizzare sempre multipart/related (nel caso in cui disponga di allegati inline e non inline, nel caso in cui disponga solo di allegati inline e nel caso in cui disponga solo di allegati non in linea)?

Oppure è il modo corretto di utilizzare un limite di tipo correlato alla divisione degli allegati in linea e un altro limite del tipo misto per dividere gli allegati non in linea?

spero che mi è possibile fornire un campione per

  1. -mail con in linea solo gli allegati
  2. -mail con i non-linea solo gli allegati
  3. -mail con la linea e non in linea allegati
+0

ho scritto una risposta con a una domanda simile e ha creato un ascii art per spiegare la risposta: http://stackoverflow.com/a/40420648/633961 – guettli

risposta

15

Immagini

Sì, è è l'approccio corretto per utilizzare il tipo di contenuto multipart/related.Ecco un esempio (si prega di notare 'Content-Type' e valori 'Content-Disposition'):

enter image description here

Example source and detailed info

Qui ci sono campioni che hai richiesto:

  1. Email con allegati solo in linea
  2. Email con allegati non solo in linea
  3. Email con inline e non inl allegati ine

Esempio 1: linea solo

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

Esempio 2: solo allegati

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

Esempio 3: inline e gli allegati

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

Rapido riepilogo

  1. Linea solo gli allegati: utilizzare multipart/related
  2. non in linea solo gli allegati: l'uso multipart/mixed
  3. Inline e gli allegati non in linea utilizzano multipart/mixed e multipart/related

Aggiornamento

Ecco un articolo molto interessante: Using Images in HTML Email

+0

prima grazie per la risposta. Per favore correggimi se ho torto, quello che capisco dalla tua risposta è che in caso di entrambi: allegati inline e non-inline devo usare entrambi, un 'multipart/mixed' AND un' multipart/related' boundary. I misti hanno le seguenti parti: 1. Il messaggio HTML inclusi gli allegati correlati e 2. Il primo allegato non in linea 3. Il secondo allegato non in linea ... La parte 1 è a sua volta suddivisa dal relativo limite. – steven

+0

Forse dovresti migliorare un po 'la tua risposta. Puoi rimuovere la parte in cui spieghi che il pdf dovrebbe essere inviato tramite content-type application/pdf perché non faceva parte della domanda. La domanda riguardava solo i tipi di contenuto al contorno. E sarebbe bello dare tre esempi come il tuo ultimo campione invece: 1. solo allegato inline image, 2. solo allegato non in linea e 3. entrambi, allegato inline e non in linea (questo è ciò che il tuo esempio mostra, proprio ora) ma puoi rimuovere la parte 'multipart/alternative' perché non faceva parte della domanda. – steven

+0

Offrirò il +100 per la tua risposta se lo migliorerai un po 'come ho spiegato. Spero che confermi la mia intenzione di fornire un campione per tutte e tre le varianti. Spero quindi di aiutare a capire il confine che non è così facile da leggere leggendo le RFC. Grazie mille. – steven