- Home
- Categorie
- Coding e Sistemistica
- PHP
- 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 diversoHelp...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.:)