Visualizzazione risultati 1 fino 9 di 9

Discussione: Form contatti non invia mail con altervista

  1. #1
    Guest

    Predefinito Form contatti non invia mail con altervista

    Non segna errore, ne esce messaggio inviato, nella mail non ricevo nulla, neanche tra lo spam


    index.html
    Codice HTML:
    <?php include('esito.php'); ?>                                
    <form id="form1" name="form1" method="post" action="esito.php">
    <div class="field half first">
     <p>
     <label for="nome">Nome</label>
     <input type="text" name="nome" id="nome" />
     </p></div>
     <div class="field half">
     <p>
     <label for="email">Email</label>
     <input type="text" name="email" id="email" />
     </p></div>
     <p>
     <label for="messaggio">Messaggio</label>
     <textarea name="messaggio" id="messaggio" cols="45" rows="5"></textarea>
     </p>
     <p>
     <input name="privacy" type="checkbox" id="privacy" value="1" />
    <label for="privacy">....Testo della Privacy....</label></p>
      <p>
        <div class="g-recaptcha" data-sitekey="6LcqeiIUAAAAAL0fxpliK5fYJARB3OVHg83Qhk_H"></div>
    <p>
     <input type="submit" name="submit" id="submit" value="Invia Messaggio" />
     <input type="reset" value="Reset" />
     </p>
    </form>
    esito.php
    Codice PHP:
    <?php session_start() ?>

    <?php
    //Controllo dati
    $error= "";

    if(isset(
    $_POST['nome']) and $_POST['nome'] != ""){//<- controllo nome
    $nome= strip_tags($_POST['nome']);
    }
    elseif(isset(
    $_POST['nome'])){
    $error .= "Nome mancante.<br />";
    }

    if(isset(
    $_POST['email']) and preg_match('/^[a-z0-9&\'\.\-_\+]+@[a-z0-9\-]+\.([a-z0-9\-]+\.)*+[a-z]{2}/is', $_POST['email'])){//<- controlla se la mail è presente e se è in un formato valido
    $mail = $_POST['email'];
    }
    elseif(isset(
    $_POST['email'])){
    $error .= "Email mancante o non valida.<br />";
    }

    if(isset(
    $_POST['messaggio']) and $_POST['messaggio'] != ""){//<- controllo messaggio
    $messaggio = strip_tags($_POST['messaggio']);
    }
    elseif(isset(
    $_POST['messaggio'])){
    $error .= "Inserire un messaggio.<br/>";
    }

    if(
    document.forms[0].privacy.checked==false){
    alert("Prego spuntare la casella");
    return
    false;
    }

    $response = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret=&response='.$_POST['g-recaptcha-response'].'&remoteip='.$_SERVER['REMOTE_ADDR']);
    $responseDecoded = json_decode($response);
    if (
    $responseDecoded->success == false ) {
    echo
    'Busted!';
    exit();
    }

    //Invio mail
    if(isset($nome,$mail,$oggetto,$messaggio)){
    $destinatario = "htmlounge@altervista.org";//<- ricorda di cambiarla!
    $intestazione = "From: ".$mail."\r\n";
    $messaggio .= "\n\nMittente: ".$nome."\nEmail: ".$mail."";

    mail($destinatario, $oggetto, $messaggio, $intestazione );

    echo
    "<p class='success'>Messaggio inviato con successo!</p>";
    }
    else{
    echo
    "<p class='error'>".$error."</p>";
    }

    ?>

  2. #2
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Come fa a non produrre errori se hai messo un pezzo di JavaScript in mezzo al PHP?
    Codice PHP:
    if (document.forms[0].privacy.checked==false) {
    alert("Prego spuntare la casella");
    return
    false;
    }
    Occhio anche quando modifichi gli header di un'email:
    Codice PHP:
    $intestazione = "From: ".$mail."\r\n";
    se non ricordo male su AlterVista lo header "From" deve essere nel formato <tuo nome utente>@altervista.org.

  3. #3
    Guest

    Predefinito

    Citazione Originalmente inviato da mzanella Visualizza messaggio
    Come fa a non produrre errori se hai messo un pezzo di JavaScript in mezzo al PHP?
    Codice PHP:
    if (document.forms[0].privacy.checked==false) {
    alert("Prego spuntare la casella");
    return
    false;
    }
    Occhio anche quando modifichi gli header di un'email:
    Codice PHP:
    $intestazione = "From: ".$mail."\r\n";
    se non ricordo male su AlterVista lo header "From" deve essere nel formato <tuo nome utente>@altervista.org.
    Ho modificato il codice, eliminando il campo oggetto e la parte in java che non so come ci è finita, ma non mi dava errore. ORA mi esce il messaggio "Messaggio inviato con successo", ma non mi arriva nulla nella mail.

    mentre per quanto riguarda la seconda parte che ha citato, su "from:" devo reinserire la mail altervista? (es. "from: miosito@ltervista.org"? Perchè ho fatto delle prove sia lasciando il campo come "from:" sia mettendo "from:mosito@altervista.org", mi esce sempre il messaggio "messaggio inviato con successo" ma non so quale dei due codici è corretto. Comunque in nessun modo ricevo la mail
    Ultima modifica di provaresidenzadm : 23-05-2017 alle ore 15.29.08

  4. #4
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Sì, l'indirizzo di altervista:
    Codice PHP:
    $intestazione = "From: provaresidenzadm@altervista.org\r\n";
    Inoltre non stai realmente controllando l'invio dell'email, dovrebbe essere:
    Codice PHP:
    if (mail($destinatario, $oggetto, $messaggio, $intestazione ) == true) {
    echo
    "Messaggio inviato";
    }
    else {
    echo
    "Messaggio non inviato";
    }
    Purtroppo anche quando l'email viene inviata, diversi email provider destinatari scelgono di bloccare e/o etichettare come spam email generate automaticamente. A tale riguardo non si può fare nulla.

  5. #5
    Guest

    Predefinito

    Grazie mille intanto per le risposte!! MAIL ARRIVATE! Ho modificato un po' il codice e ho notato che se metto la mail di altervista su from mi esce come mittente la mail miosito@altervista.org, mentre se lo lascio vuoto con solo "from:" come mittente mi esce il nome del campo "nome"!!

    Ho un ultimo problema...per quanto riguarda la checkbox. Devo controllare che la spunta sia inserita prima che invii la mail senno restituire errore...avevo pensato a questo codice:
    Codice PHP:
    if(!isset($_POST['privacy']))
    {
    echo
    "Devi accettare la privacy";
    }
    else
    {

    }
    ma mi da errorre su qualche graffa...
    inoltre sulla riga (qui sotto) devo aggiungere privacy in questo modo?
    Codice PHP:
    if (mail($destinatario, $messaggio, $privacy, $intestazione ) == true) {

  6. #6
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Ho un ultimo problema...per quanto riguarda la checkbox. Devo controllare che la spunta sia inserita prima che invii la mail senno restituire errore...avevo pensato a questo codice:
    Quel frammento non ha nessun problema con le graffe, può darsi che il problema sia altrove.

    inoltre sulla riga (qui sotto) devo aggiungere privacy in questo modo?
    No, la "privacy" è un concetto che si è inventato qualcuno nel web (per farla mooolto breve!), non c'entra niente con l'invio di una mail (o con il codice che lo realizza). Tutto ciò che hai bisogno di sapere è nella documentazione: PHP mail.

  7. #7
    Guest

    Predefinito

    privacy è il nome della checkbox.
    Io intendo far partire la mail solo se anche la spunta è attivata.
    ho aggiunto quindi tra messaggio e intestazione, $privacy, come verifica per far partire il messaggio. insieme al codice scritto precedentemente, è corretto come controllo?

    Codice PHP:
    if (mail($destinatario, $messaggio, $privacy, $intestazione ) == true) {

  8. #8
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    La funzione mail accetta, nell'ordine: destinatario, oggetto, messaggio, header. Non puoi passargli un parametro qualunque e aspettarti che capisca da sola come gestirlo.

    Se vuoi effettuare l'invio solo sotto una determinata condizione, usa gli opportuni controlli di flusso:
    Codice PHP:
    if (isset($_POST['privacy'])) {
    if (
    mail($destinatario,$oggetto, $messaggio, $intestazione) == true) {
    ...
    }
    }

  9. #9
    socialedge non è connesso Utente giovane
    Data registrazione
    24-07-2016
    Residenza
    Aversa
    Messaggi
    60

    Predefinito

    Ho avuto anche io questo problema in passato e ho utilizzato questo script


    config.php
    Codice PHP:

    <?php

    //file di configurazione variabili

    $tua_email = "tuaemail@gmail.com";
    $sito_internet = "nome del sito";

    $grazie = "firma a fine messaggio";

    ?>
    engine.php
    Codice PHP:

    <?php

    include('config.php');

    session_start();

    $nome = $_POST['nome'];
    $cognome = $_POST['cognome'];
    $email = $_POST['email'];
    $messaggio = $_POST['messaggio'];
    $oggetto = $_POST['oggetto'];
    $ip = $_SERVER['REMOTE_ADDR'];

    //Verifica antispam

    if($_POST['fred'] != "") {
    echo(
    '<p style="color: #000; font-size: 25px; font-weight: bold;">Sei uno spambot o stai usando tecniche di spam indesiderate, spiancenti ma ci siamo attrezzati per i furboni come te. La mail non e stata inviata</p>');
    }

    else {


    //Invio la mail

    $to = $tua_email;
    $sbj = "Hai ricevuto una mail dal tuo sito internet - $sito_internet";
    $msg = "
    <html>
    <head>
    <style type='text/css'>
    body{
    font-family:'Lucida Grande', Arial;
    color:#333;
    font-size:15px;
    }
    </style>
    </head>
    <body>
    <table width='600' border='0' cellspacing='0' cellpadding='5'>
    <tr>
    <td width='121' align='right' valign='baseline'><strong>Nome:</strong></td>
    <td width='459'>
    $nome</td>
    </tr>

    <tr>
    <td width='121' align='right' valign='baseline'><strong>Cognome:</strong></td>
    <td width='459'>
    $cognome</td>
    </tr>

    <tr>
    <td align='right' valign='baseline'><strong>Email:</strong></td>
    <td>
    $email</td>
    </tr>
    <tr>
    <td align='right' valign='baseline'><strong>IP:</strong></td>
    <td>
    $ip</td>
    </tr>

    <tr>
    <td align='right' valign='baseline'><strong>Oggetto:</strong></td>
    <td>
    $oggetto</td>
    </tr>
    <tr>
    <td align='right' valign='baseline'><strong>Richiesta:</strong></td>
    <td>
    $messaggio</td>
    </tr>
    <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    </tr>
    <tr>
    <td>&nbsp;</td>
    <td><small>Powered by NewtekInformatica.it | &copy; Copyright 2011 Riccardo Mel</small></td>
    </tr>

    </table>
    </body>
    </html>
    "
    ;

    $from = $email;
    $headers = 'MIME-Version: 1.0' . "\n";
    $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\n"; //In certi casi con aruba se non viene formattata eliminare il \r per i permessi come ho fatto in questo caso
    $headers .= "From: $from";


    mail($to,$sbj,$msg,$headers); //Invio mail principale.

    //Fine mail inviata a me

    //Inizio email di conferma

    $toClient = $email;
    $msgClient = "
    <html>
    <head>
    <style type='text/css'>
    body{
    font-family:'Lucida Grande', Arial;
    color:#333;
    font-size:15px;
    }
    </style>
    </head>
    <body>
    <table width='600' border='0' cellspacing='0' cellpadding='5'>
    <tr>
    <td width='117' align='right' valign='baseline'><strong>Grazie,</strong></td>
    <td width='463'>
    $nome</td>
    </tr>
    <tr>
    <td>&nbsp; Grazie per averci contattato,
    $sito_internet</td>
    <td>Abbiamo ricevuto la tua mail e ti ricontattermo prima possibile.</td>
    </tr>
    <tr>
    <td>&nbsp;</td>
    <td><small> &copy; Copyright 2011 Riccardo Mel</small></td>
    </tr>

    </table>
    </body>
    </html>
    "
    ;
    $fromClient = $email;
    $sbjClient = "Grazie, $nome ";
    $headersClient = 'MIME-Version: 1.0' . "\r\n";
    $headersClient .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
    $headersClient .= "From: $fromClient";

    mail($toClient,$sbjClient,$msgClient,$headersClient); //mail inviata al cliente

    //Fine email di conferma

    //Resetto errori

    session_destroy();

    echo
    "<img src='mail-inviata.png' /><p>Messaggio inviato con successo!</p>";

    echo
    "<a href="index.html">torna alla home.</a>";


    exit;

    }
    //fine else del controllo antispam

    ?>
    Infine " contatti.html " questo è il form che utilizzerai ovviamente puoi anche personalizzarlo
    Codice PHP:

    <form action="engine.php" method="post" name="contactform" id="contact">

    <
    label for="nome">Nome <span>(richiesto)</span></label><a name="nome"></a>
    <
    div class="row margin-bottom-20">
    <
    div class="col-md-6 col-md-offset-0">
    <
    input tabindex="1" type="text" name="nome" id="nome" value="" placeholder="Scrivi il tuo nome" required/> <br>
    </
    div>
    </
    div> <br>

    <
    label for="cognome">Cognome</label><a name="cognome"></a>
    <
    div class="row margin-bottom-20">
    <
    div class="col-md-6 col-md-offset-0">
    <
    input tabindex="2" type="text" name="cognome" id="cognome" value="" placeholder="Scrivi il tuo cognome"/>
    </
    div>
    </
    div> <br>



    <
    label for="email">Email <span>(richiesto)</span></label><a name="email"></a>
    <
    div class="row margin-bottom-20">
    <
    div class="col-md-6 col-md-offset-0">
    <
    input tabindex="3" type="email" name="email" id="email" value="" placeholder="Scrivi la mail" required/>
    </
    div>
    </
    div> <br>



    <
    label for="oggetto">Oggetto <span>(richiesto)</span></label><a name="oggetto"></a>
    <
    div class="row margin-bottom-20">
    <
    div class="col-md-6 col-md-offset-0">
    <
    input tabindex="4" type="oggetto" name="oggetto" id="oggetto" value="" placeholder="Oggetto della richiesta" required/>
    </
    div>
    </
    div> <br>



    <
    label for="messaggio">Messaggio</label>
    <
    div class="row margin-bottom-20">
    <
    div class="col-md-6 col-md-offset-0">
    <
    textarea tabindex="5" cols="50" rows="10" name="messaggio" id="messaggio" placeholder="La tua richiesta"></textarea>
    </
    div>
    </
    div>


    <
    input type="text" id="fred" name="fred" style="visibility: hidden;"/> <br>


    <
    button type="submit" class="btn btn-primary">Invia messaggio</button>


    </
    form>

    Fammi sapere come ti trovi =)
    Ultima modifica di darkwolf : 25-05-2017 alle ore 16.26.32 Motivo: +php!

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •