Problema con mail() in html

  • Creatore Discussione Creatore Discussione filomeni
  • Data di inizio Data di inizio

filomeni

Moderatore
Membro dello Staff
MOD
14 Mag 2006
1.055
6
38
54
Roseto degli Abruzzi (TE)
www.sitiweb.cloud
Ciao,
la funzione è corretta, invia le email ma se nel corpo della mail inserisco del contenuto "complesso" in html in output mi da risposta che la mail è stata inviata ma in realtà non arriva!
Ho fatto due test con lo stesso script cambiando solo ed esclusivamente il messaggio nel corpo della mail.
Nel caso seguente va tutto per il meglio:
PHP:
$mail_boundary = "=_NextPart_" . md5(uniqid(time()));
$to = "mail@destinatario.it";
$subject = "Testing email";
$sender = "mia@mail.it";
$headers = "From: $sender\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-Type: multipart/alternative;\n\tboundary=\"$mail_boundary\"\n";
$headers .= "X-Mailer: PHP " . phpversion();
$msg = "This is a multi-part message in MIME format.\n\n";
$msg .= "\n--$mail_boundary\n";
$msg .= "Content-Type: text/html; charset=\"iso-8859-1\"\n";
$msg .= "Content-Transfer-Encoding: 8bit\n\n";
$msg .= "<div align='center'>TEST EMAIL</div>";
if (mail($to, $subject, $msg, $headers, "-f$sender")) {
echo "Email inviata";
}
else{
echo "Email FALLITA!";
}
Lo stesso identico script cambiando solo il contenuto html e in questo caso loutput è "Email inviata" ma in realtà non la ricevo:
PHP:
$mail_boundary = "=_NextPart_" . md5(uniqid(time()));
$to = "mail@destinatario.it";
$subject = "Testing email";
$sender = "mia@mail.it";
$headers = "From: $sender\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-Type: multipart/alternative;\n\tboundary=\"$mail_boundary\"\n";
$headers .= "X-Mailer: PHP " . phpversion();
$msg = "This is a multi-part message in MIME format.\n\n";
$msg .= "\n--$mail_boundary\n";
$msg .= "Content-Type: text/html; charset=\"iso-8859-1\"\n";
$msg .= "Content-Transfer-Encoding: 8bit\n\n";
$msg .= "<div align='center'>
<table border="1" width="100%">
   <tr>
       <td>TEST</td>
       <td>EMAIL</td>
   </tr>
</table>
</div>";
if (mail($to, $subject, $msg, $headers, "-f$sender")) {
echo "Email inviata";
}
else{
echo "Email FALLITA!";
}
Ho provato anche a "dislocare" la variabile $msg scomponendola così:
PHP:
$msg .='<table border="1" width="100%">';
$msg .="<tr><td>TEST</td><td>EMAIL</td></tr>";
$msg .="</table>";
Ma il risultato sempre negativo!
Grazie
 
Ultima modifica:
ciao
così a occhio lo script sembrerebbe corretto.
posso darti un consiglio se puoi passa ad usare la classe phpmailler, risolve i problemi (almeno quasi tutti)
 
fai questa prova

PHP:
$msg .= "<div align=\"center\">
<table border=\"1\" width=\"100%\">
   <tr>
       <td>TEST</td>
       <td>EMAIL</td>
   </tr>
</table>
</div>";
 
ciao
così a occhio lo script sembrerebbe corretto.
posso darti un consiglio se puoi passa ad usare la classe phpmailler, risolve i problemi (almeno quasi tutti)
Bhe, si lo script è corretto perchè su altri siti mi va bene. Ora è tornato a funzionare ma non ho gran fiducia, sembra che funzioni a "singhiozzi"... mi dici per cortesia dove prelevare la classe?
 

Discussioni simili