- Home
- Categorie
- Coding e Sistemistica
- Coding
- Invio mail php
-
Invio mail php
Ciao,
sono master76...tempo fa mi avete aiutato sempre per questo modulo, ma da qualche giorno...ho un problemino con invio mail php...che fino a pochi giorni fa andava bene...poi....Warning: mail() [function.mail]: Failed to connect to mailserver at "mail.libero.it" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in www\mail\send.php on line 56
Ho seguito le istruzioni dell'errore:
verifica php.ini.....niente
uso di ini_set....niente
Ho cambiato impostazioni e quindi un nuovo indirizzo mail....ma niente sempre lo stesso errore...tranne se uso gmail
con gmail non invia il messaggio ugualmente, ma mi da un errore diverso
Help...please
Il codice di invio è:[php]<?php
$nome = $_POST['nome'];
$cognome = $_POST['cognome'];
$citta = $_POST['citta'];
$messaggio = $_POST['testo'];
$email = $_POST['mail'];if ($nome == null)
{
die( "Errore: è necessario compilare il campo 'Nome e cognome'");
}
elseif ($cognome == null)
{
die( "Errore: è necessario compilare il campo 'cognome'");
}
elseif ($citta == null)
{
die( "Errore: è necessario compilare il campo 'citta'");
}
if (!eregi("^[a-z0-9][_.a-z0-9-]+@([a-z0-9][0-9a-z-]+.)+([a-z]{2,4})", $email))
{
die( "Errore: è Indirizzo e-mail inserito non è valido");
}
if ($messaggio == null)
{
die( "Errore: è necessario compilare il campo 'Messaggio'");
}
print("<font size='13'>Invio Messaggio<br><br /></font>");
print("<br />Questi sono i dati che hai inserito:<br /><br />
Nome: <b>$nome</b><br />
Cognome: <b>$cognome</b><br />
Citta: <b>$citta</b><br />
E-mail: <b>$email</b><br />
Messaggio: <b>$messaggio</b><br />");
// Processo di configurazione dell'email
// [Destinatario, mittente, ecc]
$mail_to = indirizzo mail dest;
$mail_from = $email;
$mail_subject = "Runover";
$reply = $email;
$mail_body = "<p><font color=#000000>$messaggio</font></p>";
// Intestazioni HTML
$mail_in_html = "MIME-Version: 1.0\r\n";
$mail_in_html .= "Content-type: text/html; charset=iso-8859-1\r\n";
$mail_in_html .= "From: <$mail_from>";
// Processo di invio
ini_set("SMTP","mail.libero.it");
ini_set("smtp_port","25");
ini_set("sendmail_from","indirizzo mail dest");
if (mail($mail_to, $mail_subject, $mail_body, $mail_in_html, $reply))
{
print "Messaggio inviato con successo!";
}
else
{
die ("Errore...torna indietro e riprova!");
}
?>
[/php]Ho segnato in grassetto le impostazioni suggerite dall'errore.:?
Mi aiutereste per favore?
Grazie Master
-
Ciao master76,
Ma perchè stai utilizzando l'smtp di libero?
-
Prima utilizzavo out.alice.it poi volevo provare a vedere se cambiando le impostazioni poteva funzionare..._ma niente.
-
Oky raga...ho trovato il problema...credo.
Per ora funziona.
La possibile soluzione che vorrei condividere con voi può essere:
invece di utilizzare out.alice.it scrivere sia sullo script sopra citato che in php.ini out.alicemail.it.
...e pare funzioni.

-
@master76 said:
if ($nome == null)
{
die( "Errore: è necessario compilare il campo 'Nome e cognome'");
}
elseif ($cognome == null)
{
die( "Errore: è necessario compilare il campo 'cognome'");
}Guarda secondo me ti sei complicato troppo la vita inserendo l'smtp, inoltre anche qui l'hai complicata... hai fatto if($nome == null) { die ("inserire nome e cognome"); sotto lo stesso...
è inutile, bastava fare[php]
if($nome == null) OR ($cognome == null)
{
print("Nome e Cognome obbligatori");
}
[/php]inoltre ti consiglio di usare trim per l'invio email, elimina gli spazi vuoti nei form!
-
Grazie,
sicuramente ho allungato il codice, grazie del suggerimento.
Ma non ti seguo più quando mi suggerisci di utilizzare trim per l'invio mail...potresti spiegarti meglio?
Grazie 1000.
-
Allora tu per l'invio email controlli che i campi non siano vuoti, ma che succede se io nei form metto anche un solo spazio e poi invio l'email ? Succede che lo spazio viene letto come un carattere e quindi ti arriverà un email con dei campi vuoti.
Se invece usi trim, elimina gli spazi vuoti dal form, costringendo l'utente che ti scrive, ad inserire obbligatoriamente i dati nei form.
Esempio di codice :
[php]
if (trim($_POST['nome']) == ""
OR trim($_POST['cognome']) == "")
{
print ("Campi obbligatori");
}
else {
// istruzioni da eseguire
}
[/php]
-
Chiaro.... non avevo pensato agli spazi... Grazie.:)