ciao a tutti,
finalmente sono riuscito a inviare una email da php in formato html.

Ecco il codice, preso da html.it (http://freephp.html.it/articoli/view...p?id=150&pag=4 )

<?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 <a href=\"http://www.html.it\">www.html.it</a><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!";
?>

ho provato a racchiudere questo codice in un ciclo while che prende uno per uno l'indirizzo email degli utenti da un database mysql, stringa che inserisco in header al posto di CC:

ovvero sostituisco a
$header .= "CC: Altro Ricevente <altroricevente@dominio.net>\n";

questa riga
$header .= "CC: ".$email;

dove $email ha come valore la stringa presa dal db nel ciclo corrente while.

Però il problema è che l'email viene spedita solo all'indirizzo del primo ciclo. Forse potrebbe essere che cicla più velocemente di quanto il server possa invare le email con immagini?!?!

Qualcuno sa indicarmi dove sbaglio?