Avendo la necessità di inviare una mail con all’interno degli allegati o delle immagini, la soluzione più semplice, lato server, è quella di utilizzare la funzione nativa di php mail().
Questa funzione però è piuttosto limitata nella possibilità di visualizzazione. Da qui entra in gioco quello che sono le MIME, estensioni della funzione internet mail.
Poichè in rete è presente un articolo esaustivo e semplice scritto sa Ermanno Ancona nel lontano 2004 non mi dilungo sulla spiegazione del codice poichè viene gaà trattata bene ed esaustivamente.
Quello che segue è il codice che ho utilizzato io per risolvere il problema in cui ero incappato:
// selezioniamo il o i destinatari
$to ="utente@dominio.it"
// costruiamo alcune intestazioni generali
$header = "From: Kreatore <info@kreatore.it>n";
// generiamo la stringa che funge da separatore
$boundary = "==String_Boundary_x" .md5(time()). "x";
//carichiamo il file di cui abbiamo bisogno encodato in base64
$inline = chunk_split(base64_encode(file_get_contents('images/logo.jpg')));
// costruiamo le intestazioni che specificano
// un messaggio costituito da più parti alternative
$header .= "MIME-Version: 1.0n";
$header .= "Content-Type: multipart/alternative;n";
$header .= " boundary="$boundary";nn";
// questa parte del messaggio viene visualizzata
// solo se il programma non sa interpretare
// i MIME poiché è posta prima della stringa boundary
$messaggio = "Se visualizzi questo testo il tuo programma non supporta i MIMEnn";
// costruiamo la sezione in formato html
$messaggio .= "--$boundaryn";
$messaggio .= "Content-Type: text/html; charset="iso-8859-1"n";
$messaggio .= "Content-Transfer-Encoding: 7bitnn";
$messaggio .= '<html><body><h1>Kreatore.it</h1><p>Buongiorno '.$variabilenome.'<br/> E' stato pubblicato un nuovo articolo sul sito <a href="http://www.kreatore.it">Kreatore.it</a><br /> Vieni a visitarlo.</p>
<p><img src="cid:KREATORElogo" alt=""></p></body></html>nn';
// usiamo la codifica base64 per trasmettere il file
$image = chunk_split(base64_encode(file_get_contents('images/logo.jpg')));
// costruiamo la sezione contenente l'immagine
// cui attribuiamo l'id KREATORElogo
$messaggio .= "--$boundaryn";
$messaggio .= "Content-ID: <KREATORElogo>n";
$messaggio .= "Content-Type: image/jpegn";
$messaggio .= "Content-Transfer-Encoding: base64nn";
$messaggio .= "$imagenn";
// chiusura del messaggio con la stringa boundary
$messaggio .= "--$boundary--n";
$subject = "Conferma di nuovo articolo";
@mail($to,$subject, $messaggio, $header);