PDA

View Full Version : E-mail in HTML tramite script PHP


zUmBo!
26-03-2003, 23:59
A questo punto la domanda nasce spontanea:

Sarà mai possibile mandare e-mail HTML da script PHP???

Grazie, Adri.

igorlazunna
27-03-2003, 08:54
Assolutamente si

<?
$dest="dest@mail.it";
$subj="Soggetto mail";
$testo="<br> Il testo <b>che vuoi</b> con flag html: <br> e se vuoi anche dei link<br><a href=http://www.dominio.it>WWW</a>";
mail($dest, $subj, $testo, "From: Nome <mail@mitt.com>\n" . "X-Mailer: PHP 4.x\n" . "Content-type: text/html; charset=iso-8859-1;");
?>

zUmBo!
27-03-2003, 11:31
Scusa se rompo, ma qualcosa del tipo:

<a href="http://www.miodominio.it/news/prova.php"><img src="http://www.miodominio.it/images/picopallino.gif" width="50" height="30"></a>

non si può fare?

Grazie :D

igorlazunna
27-03-2003, 13:11
perchè no. tutto queelo che vuoi mettere lo metti nel messaggio della email
(nell'esempio di prima, $testo)

PS Attenzione alle virgolette, se vuoi inserire le virgolette nel link, devi fare cosi:

$testo="<a href=\"http://www.tuodominio.it\">Link</a>";

zUmBo!
27-03-2003, 19:27
Ciao Igor,
In base alle tue istruzioni, ho modificato un semplice form-mail molto spartano :D solo che questo non manda "e-mail html compatibili", mi sai dire dove sbaglio???

<html>
<head>
<title>Provamail</title>
</head>
<body>

<?
//INIZIO FORM

$blocco_modulo="

<form method=\"post\" action=\"$PHP_SELF\">

<p><strong>Il tuo nome:</strong><br>
<input type=\"text\" name=\"nome\" value=\"$nome\" size=30></p>

<p><strong>Il tuo indirizzo e-mail:</strong><br>
<input type=\"text\" name=\"email\" value=\"$email\" size=30></p>

<p><strong>oggetto</strong><br>
<input type=\"text\" name=\"oggetto\" value=\"$oggetto\" size=30></p>

<p><strong>Messaggio:</strong><br>
<textarea name=\"messaggio\" cols=40 rows=5 wrap=virtual>$messaggio</textarea></p>

<p><input type=\"reset\" name=\"Reimposta\" value=\"reimposta\">

<input type=\"hidden\" name=\"operazioni\" value=\"esegui_operazioni\">

<input type=\"submit\" name=\"invia\" value=\"Invia il modulo!\"></p>

</form>

";

//FINE FORM

if ($operazioni!="esegui_operazioni") {

echo "$blocco_modulo";

}

else if ($operazioni=="esegui_operazioni") {

if ($nome=="") {
$err_nome="<font color=red>Attenzione: digita il tuo nome!</font><br>";
$invia="no";

}

if ($email=="") {
$err_mail="<font color=red>Attenzione: digita il tuo indirizzo e-mail!</font><br>";
$invia="no";

}

if ($oggetto=="") {
$err_oggetto="<font color=red>Attenzione: specifica l'oggetto della lettera!</font><br>";
$invia="no";

}

if ($messaggio=="") {
$err_messaggio="<font color=red>Attenzione: digita un messaggio!</font><br>";
$invia="no";

}

if ($invia!="no") {

$destinatario="novamail@libero.it";
$headers = "From: $nome<$email>\n";
$headers .= "Reply-To: <$email>\n";
$headers .= "MIME-Version: 1.0\n";

$headers .= "Content-Type: multipart/related; type=\"multipart/alternative\"; boundary=\"----=MIME_BOUNDRY_main_message\"\n";

$headers .= "X-Sender: $nome<$email>\n";
$headers .= "X-Mailer: PHP4\n"; //mailer
$headers .= "X-Priority: 3\n"; //1 UrgentMessage, 3 Normal
$headers .= "Return-Path: <$email>\n";
$headers .= "Content-type: text/html; charset=iso-8859-1;";
$msg="E-mail inviata dal sito web\n\n";
$msg.="Nome mittente:
$nome\n";
$msg.="Indirizzo e-mail mittente:
$email\n\n";
$msg.="messaggio:\n
$messaggio";

mail($destinatario, $oggetto, $msg, $headers);



//LETTERA DI RISPOSTA

$risposta="
<html>
<head>
<title>ce vedemo</title>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">
</head>

<body bgcolor=\"#FFFFFF\" text=\"#000000\">
Ciao $nome,
abbiamo ricevuto il tuo messaggio:
$messaggio.
Se ci hai fatto qualche particolare richiesta ti risponderemo\n
al più presto all'indirizzo e-mail da te segnalato: $email.\n
Nell'occasione ti porgiamo i nostri saluti.\n
Lo staff di italiantour\n\n
<a href=\"http://napoli.italiantour.it\">
<img src=\"http://www.italiazoom.net/images/avatar/faccina.ico\"></a>
<img src=\"http://www.italiazoom.net/images/inclusioni/espanol-50x30.gif\" width=\"50\" height=\"30\">
</body>
</html>
";

$oggetto_risp="Re:$oggetto";
$headers_risp = "From: ItaliaZoom<info@italiazoom.net>\n";
$headers_risp .= "Reply-To: <info@italiazoom.net>\n";
$headers_risp .= "MIME-Version: 1.0\n";

$headers_risp .= "Content-Type: multipart/related; type=\"multipart/alternative\"; boundary=\"----=MIME_BOUNDRY_main_message\"\n";

$headers_risp .= "X-Sender: ItaliaZoom<info@italiazoom.net>\n";
$headers_risp .= "X-Mailer: PHP4\n"; //mailer
$headers_risp .= "X-Priority: 3\n"; //1 UrgentMessage, 3 Normal
$headers_risp .= "Return-Path: <$email>\n";
$headers_risp .= "Content-Type: text/plain; charset=iso-8859-1\r\n";

mail($email, $oggetto_risp, $risposta, $headers_risp);

echo "<p>L'e-mail è stata inviata!</p>";

}

else if ($invia=="no") {

echo "$err_nome";
echo "$err_mail";
echo "$err_messaggio";
echo "$err_oggetto";

echo "$blocco_modulo";
}
}
?>
</body>
</html>

Gracias.

igorlazunna
27-03-2003, 21:02
togli la riga:

$headers .= "Content-Type: multipart/related; type=\"multipart/alternative\"; boundary=\"----=MIME_BOUNDRY_main_message\"\n";


e poi riprova. dovrebbe funzionare correttamente

zUmBo!
27-03-2003, 21:38
Ho fatto come mi hai detto! :D
Ma niente da fare! :cry: :muro:

<html>
<head>
<title>Provamail</title>
</head>
<body>

<?
//INIZIO FORM

$blocco_modulo="

<form method=\"post\" action=\"$PHP_SELF\">

<p><strong>Il tuo nome:</strong><br>
<input type=\"text\" name=\"nome\" value=\"$nome\" size=30></p>

<p><strong>Il tuo indirizzo e-mail:</strong><br>
<input type=\"text\" name=\"email\" value=\"$email\" size=30></p>

<p><strong>oggetto</strong><br>
<input type=\"text\" name=\"oggetto\" value=\"$oggetto\" size=30></p>

<p><strong>Messaggio:</strong><br>
<textarea name=\"messaggio\" cols=40 rows=5 wrap=virtual>$messaggio</textarea></p>

<p><input type=\"reset\" name=\"Reimposta\" value=\"reimposta\">

<input type=\"hidden\" name=\"operazioni\" value=\"esegui_operazioni\">

<input type=\"submit\" name=\"invia\" value=\"Invia il modulo!\"></p>

</form>

";

//FINE FORM

if ($operazioni!="esegui_operazioni") {

echo "$blocco_modulo";

}

else if ($operazioni=="esegui_operazioni") {

if ($nome=="") {
$err_nome="<font color=red>Attenzione: digita il tuo nome!</font><br>";
$invia="no";

}

if ($email=="") {
$err_mail="<font color=red>Attenzione: digita il tuo indirizzo e-mail!</font><br>";
$invia="no";

}

if ($oggetto=="") {
$err_oggetto="<font color=red>Attenzione: specifica l'oggetto della lettera!</font><br>";
$invia="no";

}

if ($messaggio=="") {
$err_messaggio="<font color=red>Attenzione: digita un messaggio!</font><br>";
$invia="no";

}

if ($invia!="no") {

$destinatario="novamail@libero.it";
$headers = "From: $nome<$email>\n";
$headers .= "Reply-To: <$email>\n";
$headers .= "MIME-Version: 1.0\n";

$headers .= "X-Sender: $nome<$email>\n";
$headers .= "X-Mailer: PHP4\n"; //mailer
$headers .= "X-Priority: 3\n"; //1 UrgentMessage, 3 Normal
$headers .= "Return-Path: <$email>\n";
$headers .= "Content-type: text/html; charset=iso-8859-1;";
$msg="E-mail inviata dal sito web\n\n";
$msg.="Nome mittente:
$nome\n";
$msg.="Indirizzo e-mail mittente:
$email\n\n";
$msg.="messaggio:\n
$messaggio";

mail($destinatario, $oggetto, $msg, $headers);



//LETTERA DI RISPOSTA

$risposta="
<html>
<head>
<title>ce vedemo</title>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">
</head>

<body bgcolor=\"#FFFFFF\" text=\"#000000\">
Ciao $nome,
abbiamo ricevuto il tuo messaggio:
$messaggio.
Se ci hai fatto qualche particolare richiesta ti risponderemo\n
al più presto all'indirizzo e-mail da te segnalato: $email.\n
Nell'occasione ti porgiamo i nostri saluti.\n
Lo staff di italiantour\n\n
<a href=\"http://napoli.italiantour.it\">
<img src=\"http://www.italiazoom.net/images/avatar/faccina.ico\"></a>
<img src=\"http://www.italiazoom.net/images/inclusioni/espanol-50x30.gif\" width=\"50\" height=\"30\">
</body>
</html>
";

$oggetto_risp="Re:$oggetto";
$headers_risp = "From: ItaliaZoom<info@italiazoom.net>\n";
$headers_risp .= "Reply-To: <info@italiazoom.net>\n";
$headers_risp .= "MIME-Version: 1.0\n";

$headers_risp .= "X-Sender: ItaliaZoom<info@italiazoom.net>\n";
$headers_risp .= "X-Mailer: PHP4\n"; //mailer
$headers_risp .= "X-Priority: 3\n"; //1 UrgentMessage, 3 Normal
$headers_risp .= "Return-Path: <$email>\n";
$headers_risp .= "Content-Type: text/plain; charset=iso-8859-1\r\n";

mail($email, $oggetto_risp, $risposta, $headers_risp);

echo "<p>L'e-mail è stata inviata!</p>";

}

else if ($invia=="no") {

echo "$err_nome";
echo "$err_mail";
echo "$err_messaggio";
echo "$err_oggetto";

echo "$blocco_modulo";

}

}

?>

</body>

</html>

Se hai suggerimenti... :D

Ciao.

igorlazunna
28-03-2003, 08:55
il codice è corretto. mi spieghi in che senso non vengono inviati messaggi html corretti ?

zUmBo!
28-03-2003, 16:42
Semplice, le e-mail arrivano come testo nero su bianco, ad esempio

<img src=\"http://www.italiazoom.net/images/inclusioni/espanol-50x30.gif\" width=\"50\" height=\"30\">

Mi arriva esattamente così, solo privo di slashes (\)

<img src="http://www.italiazoom.net/images/inclusioni/espanol-50x30.gif" width="50" height="30">

L'e-mail è di testo, non decodifica l'html come un browser. :cry:

Staremo a vedere che è più duro! :muro:

Ciao

igorlazunna
28-03-2003, 17:07
quindi il problema è nella mail di risposta....
guarda come mandi l'emai:
$headers_risp .= "Content-Type: text/plain; charset=iso-8859-1\r\n"; :mad:

Cioè la mandi come testo
metti:
$headers_risp .= "Content-Type: text/html; charset=iso-8859-1\r\n";

e correggi il tag <a href> perchè non è chiuso e non è specificato il link

zUmBo!
28-03-2003, 17:42
:eek: Hai proprio ragione, alle volte dormo sveglio!
Come ben puoi immaginare ora è tutt'ok,
:sofico:
grazie ancora e auguri per il forum!