Ragazzi, ho provato questo codice per inviare email in formato html con, nel corpo, un'immagine. Ma arriva una mail vuota come mai?
ecco il codice:
$header = "From: <$email>\n";
$header .= "X-Mailer: GNV Web Promo Mail \n";
// generiamo la stringa che funge da separatore
$boundary = "==String_Boundary_x" .md5(time()). "x";
// costruiamo le intestazioni specifiche per un messaggio
// con parti relazionate
$header .= "MIME-Version: 1.0\n";
$header .= "Content-Type: multipart/related;\n";
$header .= " boundary=\"$boundary\";\n\n";
$messaggio .= "--$boundary\n";
$messaggio .= "Content-Type: text/html; charset=\"iso-8859-1\"\n";
$messaggio .= "Content-Transfer-Encoding: 7bit\n\n";
$messaggio .= "<html><body><p align=center>Visita il sito </p></body></html>\n\n";
// costruiamo la sezione contenente l'immagine
// cui attribuiamo l'id MiaImmagine123
$messaggio .= "--$boundary\n";
$messaggio .= "Content-ID: <MiaImmagine123>\n";
$messaggio .= "Content-Type: image/jpeg\n";
$messaggio .= "Content-Transfer-Encoding: base64\n\n";
// leggiamo il file corrispondente all'immagine dal nostro server
$allegato = "cartella_server/".$immagine_messaggio;
$file = fopen($allegato,'rb');
$data = fread($file,filesize($allegato));
fclose($file);
// usiamo la codifica base64 per trasmettere il file
$data = chunk_split(base64_encode($data));
$messaggio .= "$data\n\n";
// chiusura del messaggio con la stringa boundary
$messaggio .= "--$boundary--\n";
mail($destinatario, $subject, $messaggio, $header)