• User Newbie

    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 :mmm:

    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


  • ModSenior

    Ciao master76,

    Ma perchè stai utilizzando l'smtp di libero?


  • User Newbie

    Prima utilizzavo out.alice.it poi volevo provare a vedere se cambiando le impostazioni poteva funzionare..._ma niente.


  • User Newbie

    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. 🙂


  • User Attivo

    @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!


  • User Newbie

    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.


  • User Attivo

    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]


  • User Newbie

    Chiaro.... non avevo pensato agli spazi... Grazie.:)