Ho letto l'articolo relativo all'invio di mail con testo html e allegato. Inoltre ho letto questoa pillola. Però non sono riuscito a capire come si fa ad allegare più file. Come si usano i boundary? Il codice copiato dall'articolo è:
Codice PHP:
<?php
// costruiamo alcune intestazioni generali
$header = "From: Inviante <inviante@dominio.org>\n";
$header .= "CC: Altro Ricevente <altroricevente@dominio.net>\n";
$header .= "X-Mailer: Il nostro Php\n";
// generiamo le stringhe utilizzate come separatori
$boundary = "==String_Boundary_x" .md5(time()). "x";
$boundary2 = "==String_Boundary2_y" .md5(time()). "y";
// costruiamo le intestazioni specifiche per un messaggio
// con parti relazionate
$header .= "MIME-Version: 1.0\n";
$header .= "Content-Type: multipart/related;\n";
$header .= " type=\"multipart/alternative\";\n";
$header .= " boundary=\"$boundary\";\n\n";
$messaggio = "Se visualizzi questo testo il tuo programma non supporta i MIME\n\n";
// il primo segmento del multipart/related
// è definito come multipart/alternative
$messaggio .= "--$boundary\n";
$messaggio .= "Content-Type: multipart/alternative;\n";
$messaggio .= " boundary=\"$boundary2\";\n\n";
// sezione alternativa in puro testo
$messaggio .= "--$boundary2\n";
$messaggio .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
$messaggio .= "Content-Transfer-Encoding: 7bit\n\n";
$messaggio .= "Messaggio alternativo in formato testo.\n\n";
// sezione alternativa in formato html
$messaggio .= "--$boundary2\n";
$messaggio .= "Content-Type: text/html; charset=\"iso-8859-1\"\n";
$messaggio .= "Content-Transfer-Encoding: 7bit\n\n";
$messaggio .= "<html><body>
Questo messaggio è in formato
html ma ha una parte testo.</p>
Visita il sito <img src=\"cid:MiaImmagine123\"></p></body></html>\n";
// chiusura della sezione multipart/alternative
$messaggio .= "--$boundary2--\n";
// seconda sezione del multipart/related contenente l'immagine
$messaggio .= "--$boundary\n";
$messaggio .= "Content-ID: <MiaImmagine123>\n";
$messaggio .= "Content-Type: image/jpeg\n";
$messaggio .= "Content-Transfer-Encoding: base64\n\n";
$allegato = "./images/miaimmagine.jpg";
$file = fopen($allegato,'rb');
$data = fread($file,filesize($allegato));
fclose($file);
$data = chunk_split(base64_encode($data));
$messaggio .= "$data\n\n";
// chiusura della sezione multipart/related
$messaggio .= "--$boundary--\n";
$subject = "oggetto del messaggio alternativo con immagini inline";
if( @mail("ricevente@dominio.it", $subject, $messaggio, $header) ) echo "e-mail inviata con successo!";
else echo "errore nell'invio dell'e-mail!";
?>
Se ad esempio volessi allegare due o tre immagini e inserirle nel testo html? Ho fatto alcuni tentativi ma i risultati sono stati disastrosi!!