Visualizzazione risultati 1 fino 24 di 24

Discussione: php mail google

  1. #1
    Guest

    Predefinito php mail google

    Ciao a tutti, sto implementando un sito che possa ricevere email su account google, m dopo vari tentativi mi sono arreso.
    il codice pho che ho utilizzato è quello di seguito, ma mi sa che è del tutto inutile.
    Come posso risolvere? Grazie per la cortese attenzione.

    Codice:

    Codice PHP:
    <?php

    $to
    ="mioaccount@gmail.com";

    $name=$_POST['nome'];
    $mail=$_POST['mail'];
    $telefono=$_POST['telefono'];
    $messaggio=$_POST['body'];

    mail($nome, $mail, $telefono, $messaggio);

    ?>
    Qui di seguiti aggiungo anche il codice della pagina html:

    Codice HTML:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Documento senza titolo</title>
    
    <link href="../css/modulomail.css" rel="stylesheet" type="text/css" />
    
    <style type="text/css">
    <!--
    
    -->
    </style>
    </head>
    
    <body>
     <form action="invioo.php" method="post" id="modulo">
     <table width="100%" align="center">
     
    
     <p>Informazioni del cliente</p>
     
     <table>
      <tr>
      <td>Nome  </td>
       <td><label>
      <input name="name" type="text" id="nome" size="40" />
      </label></td>
      </tr>
      <tr>
      <td>Il tuo indirizzo e-mail  </td>
       <td><label>
      <input name="mail" type="text" id="mail" size="40" />
      </label></td>
      </tr>
        <tr>
      <td>Il tuo numero di telefono  </td>
       <td><label>
      <input name="telefono" type="text" id="telefono" size="9" maxlength="10" />
      </label></td>
      </tr>
      </table>
      
      <p>Il tuo messaggio</p>
      <table>
      <tr>
       <td>Messaggio  </td>
       <td>
       <textarea name="Messaggio" cols="35" rows="10" id="body"></textarea>
      </td>
      </tr>
      <tr>
      <td><label></label>
      </td>
      <td><label>
    <input type="submit" name="submit" id="submit" value="Invia" /> <input type="reset" name="cancella" id="cancella" value="Ripristina" />
      </label></td>
      </tr>
      </table>
      </table>
      </form> 
    </body>
    </html>
    Ultima modifica di darkwolf : 02-07-2017 alle ore 14.49.03 Motivo: +bbcode

  2. #2
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,896

    Predefinito

    Le variabili POST saranno quelle contenute nell'attributo name e non id.. Ciao

  3. #3
    Guest

    Predefinito

    Grazie mille Darbula, ho provato a modificare le variabili ma senza alcun successo.

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

    Predefinito

    Oltre alle indicazioni di darbula, il modo in cui usi la funzione mail non è corretto, non puoi passarle dei valori arbitrari (nome, email del mittente, numero di telefono e messaggio) aspettandoti che capisca da sola come interpretarli, dei seguirne la sintassi (vedi la documentazione ufficiale per mail).

    Assicurati inoltre di provare ad inviare l'email solo quando la pagina viene effettivamente richiesta tramite POST (altrimenti l'invio avverrà ad ogni caricamento della pagina). A seconda delle tue necessità potresti avere bisogno di implementare anche altri controlli.

    Nello specifico, quasi certamente hai bisogno di qualcosa del genere:
    Codice PHP:
    if (isset($_POST['name'], $_POST['mail'], $_POST['telefono'], $_POST['Messaggio'])) {
    // Legge i valori passati tramite POST
    $name = $_POST['name'];
    $mail = $_POST['mail'];
    $telefono = $_POST['telefono'];
    $messaggio = $_POST['Messaggio'];

    // Prepara ed invia la mail
    $to = "mioaccount@gmail.com";
    $subject = "Email dal cliente " . $nome;
    $message = "Nome cliente: $nome, tel.: $telefono\n" . $messaggio;
    $accepted = mail($nome, $mail, $telefono, $messaggio);

    // Controlla eventuali errori nell'invio
    if (!$accepted) {
    echo
    "L'email non è stata accettata per l'invio";
    }
    }

  5. #5
    Guest

    Predefinito

    Sono molto a digiuno di php, quindi ho chiestio aiuto al forum, sul quale gentilmente tu mi hai risposto. Quindi adesso mi basterebbe copiare quello che mi hai messo tu nel file pho oppure dovrei fare qualche altro passaggio a ne sconosciuto? Grazie mille

  6. #6
    Guest

    Predefinito

    Ho provato a copiare il codice che mi hai passato, ma nulla, non funziona....per ora nella pagina html alla funzione action ho messo mailto: ecc ecc

  7. #7
    Guest

    Predefinito

    Ho provato sia con MAMP sia in remoto su Altervista ma nulla

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

    Predefinito

    nella pagina html alla funzione action ho messo mailto
    No, mailto si usa nelle ancore come protocollo, come action del form devi indicare la pagina contenente il codice PHP per l'invio.

    Quindi adesso mi basterebbe copiare quello che mi hai messo tu nel file pho oppure dovrei fare qualche altro passaggio a ne sconosciuto?
    Il codice che ti ho mostrato si limita a recuperare alcuni valori da $_POST ed usarli per provare ad inviare un'email. Nulla di più, dopo averlo fatto mostrerà una pagina bianca. Naturalmente dovrai modificarlo in base alle tue esigenze.

    Riguardo al "non funzionare", le cose che possono essere andate storte sono diverse:
    • il form
    • la lettura dal $_POST
    • l'elaborazione dei dati
    • l'invio dell'email
    • la ricezione dell'email

    Per valutare se l'errore riguardano i primi tre, puoi modificare lo script PHP aggiungendo delle stampe a video:
    Codice PHP:
    if (isset($_POST['name'], $_POST['mail'], $_POST['telefono'], $_POST['Messaggio'])) {
    // Legge i valori passati tramite POST
    $name = $_POST['name'];
    $mail = $_POST['mail'];
    $telefono = $_POST['telefono'];
    $messaggio = $_POST['Messaggio'];

    // Prepara ed invia la mail
    $to = "mioaccount@gmail.com";
    $subject = "Email dal cliente " . $nome;
    $message = "Nome cliente: $nome, tel.: $telefono\n" . $messaggio;
    $accepted = mail($nome, $mail, $telefono, $messaggio);

    // Controlla eventuali errori nell'invio
    if (!$accepted) {
    echo
    "L'email non è stata accettata per l'invio";
    }
    else {
    echo
    "Email inviata a: $to <br>";
    echo
    "Contenuto della mail:<pre>$message</pre>";
    }
    }
    else {
    echo
    "Mancano dei parametri nella richiesta";
    }
    Se visualizzi il messaggio di conferma dell'invio, vuol dire che il problema è nella casella di posta del ricevente. Ad esempio il provider potrebbe bloccarla considerandola spam.

  9. #9
    Guest

    Predefinito

    Ho provato con la mia stessa mail per provare la quale non ha restrizioni. Proverò domani con il codice supplementare che mi hai inviato. Eh ma che casino sto php....

  10. #10
    Guest

    Predefinito

    A proposito (scusa l'ignoranza in merito ) il codice che mi hai inviato va racchiuso tra <?php e ?> giusto? Correggimi se sbaglio ma stai parlando con un totale neofita di php

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

    Predefinito

    [quote]
    il codice che mi hai inviato va racchiuso tra <?php e ?> giusto?
    [/php]
    Sì, esatto.

  12. #12
    Guest

    Predefinito

    Ciao mzanella, ho provato ora e mi restituisce l'errore "Mancano dei parametri nella richiesta" che non ho la minima idea di cosa intenda.

  13. #13
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,896

    Predefinito

    Ciao il form HTML non è cambiato? Se è cambiato il form più precisamente il valore di method="post" e/o i valori dei name, devi modificare il codice php con i rispettivi valore dei name...PS.. modifica anche $nome in $name.

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

    Predefinito

    Vuol dire che alcuni dei valori che intendi leggere da $_POST mancano. Controlla che gli attributi name dei campi del form coincidano con i valori usati nello script.

  15. #15
    Guest

    Predefinito

    Per sicurezza ri-posto i codici sia HTML che PHP....non ci sto più capendo nulla...

    CODICE HTML
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Documento senza titolo</title>

    <link href="../css/modulomail.css" rel="stylesheet" type="text/css" />

    <style type="text/css">
    <!--

    -->
    </style>
    </head>

    <body>
    <form action="invio.php" method="post" id="modulo">
    <table width="100%" align="center">


    <p>Informazioni del cliente</p>

    <table>
    <tr>
    <td>Nome </td>
    <td><label>
    <input name="name" type="text" id="name" size="40" />
    </label></td>
    </tr>
    <tr>
    <td>Il tuo indirizzo e-mail </td>
    <td><label>
    <input name="mail" type="text" id="mail" size="40" />
    </label></td>
    </tr>
    <tr>
    <td>Il tuo numero di telefono </td>
    <td><label>
    <input name="telefono" type="text" id="telefono" size="9" maxlength="10" />
    </label></td>
    </tr>
    </table>

    <p>Il tuo messaggio</p>
    <table>
    <tr>
    <td>Messaggio </td>
    <td>
    <textarea name="messaggio" cols="35" rows="10" id="messaggio"></textarea>
    </td>
    </tr>
    <tr>
    <td><label></label>
    </td>
    <td><label>
    <input type="submit" name="submit" id="submit" value="Invia" /> <input type="reset" name="cancella" id="cancella" value="Cancella" />
    </label></td>
    </tr>
    </table>
    </table>
    </form>
    </body>
    </html>


    CODICE PHP:

    <?php

    if (isset($_POST['name'], $_POST['mail'], $_POST['telefono'], $_POST['messaggio'])) {
    // Legge i valori passati tramite POST
    $name = $_POST['name'];
    $mail = $_POST['mail'];
    $telefono = $_POST['telefono'];
    $messaggio = $_POST['messaggio'];

    // Prepara ed invia la mail
    $to = "mioaccount@gmail.com";
    $subject = "Email dal cliente " . $nome;
    $message = "Nome cliente: $nome, tel.: $telefono\n" . $messaggio;
    $accepted = mail($nome, $mail, $telefono, $messaggio);

    // Controlla eventuali errori nell'invio
    if (!$accepted) {
    echo "L'email non è stata accettata per l'invio";
    }
    else {
    echo "Email inviata a: $to <br>";
    echo "Contenuto della mail:<pre>$message</pre>";
    }
    }
    else {
    echo "Mancano dei parametri nella richiesta";
    }
    ?>

  16. #16
    Guest

    Predefinito

    Ora però senza variare nulla l'errore è cambiato in "L'email non è stata accettata per l'invio". Boh...

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

    Predefinito

    Ho fatto un errore di copia-e-incolla nei messaggi precedenti, questa riga va sostituita:
    Codice PHP:
    $accepted = mail($nome, $mail, $telefono, $messaggio);
    con questa:
    Codice PHP:
    $accepted = mail($to, $subject, $message);
    Le mie scuse .

  18. #18
    Guest

    Predefinito

    Ci mancherebbe...scuca te per la tua pazienza

  19. #19
    Guest

    Predefinito

    Allora, modificando il codice come mi hai indicato ottengo:
    Email inviata a: miamail@gmail.com
    Contenuto della mail:

    Nome cliente: , tel.: 1234567890
    Ma comunque sia la mail non arriva.

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

    Predefinito

    Ok, ora l'invio è sistemato.
    Il problema ora è nella ricezione, purtroppo succede relativamente spesso che i provider blocchino le email inviate automaticamente. Hai provato a controllare nella cartella spam?

  21. #21
    Guest

    Predefinito

    Assolutamente si...è la prima cosa che ho fatto, ma ahimè è vuota....

  22. #22
    Guest

    Predefinito

    Ho provato anche con un altro mio indirizzo mail @alice.it ma nulla

  23. #23
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,896

    Predefinito

    In base il primo e l'ultimo codice HTML da te fornito il codice PHP è questo (non esiste Messaggio , $nome) ecc.
    Codice PHP:
    <?php
    if (isset($_POST['name'], $_POST['mail'], $_POST['telefono'], $_POST['messaggio'])) {
    // Legge i valori passati tramite POST
    $name = $_POST['name'];
    $mail = $_POST['mail'];
    $telefono = $_POST['telefono'];
    $messaggio = $_POST['messaggio'];

    // Prepara ed invia la mail
    $from = "nick@altervista.org";
    $to = "mioaccount@gmail.com";
    $subject = "Email dal cliente " . $name;
    $message = wordwrap("Nome cliente: $name, tel.: $telefono\n" . $messaggio, 70 , "\r\n");
    $headers = "From: {$from}\r\n" .
    "Reply-To: {$from}\r\n" .
    'X-Mailer: PHP/' . phpversion();
    $accepted = mail($to, $subject, $message, $headers);

    // Controlla eventuali errori nell'invio
    if (!$accepted) {
    echo
    "L'email non è stata accettata per l'invio";
    }
    else {
    echo
    "Email inviata a: $to <br>";
    echo
    "Contenuto della mail:<pre>$message</pre>";
    }
    }
    else {
    echo
    "Mancano dei parametri nella richiesta";
    }
    ?>
    Anche se ho aggiunto gli headers nello specifico il campo " From: " l'e-mail non viene inviata.

  24. #24
    Guest

    Predefinito

    Credo di aver risolto in questo modo...almeno a me sembra funzionare dal momento che le mail arrivano anche se nella cartella spam:

    <?php session_start();
    if(isset($_POST['Submit'])) {
    $youremail = 'mail necessaria';
    $fromsubject = 'Mail proveniente dal sito...';
    $title = $_POST['title'];
    $fname = $_POST['fname'];
    $mail = $_POST['mail'];
    $phone = $_POST['phone'];
    $message = $_POST['message'];
    $to = $youremail;
    $mailsubject = 'Masage recived from'.$fromsubject.' Contact Page';
    $body = $fromsubject.'

    La persona che ti ha contattato è '.$fname.'
    Telefono: '.$phone.'
    E-mail: '.$mail.'
    Oggetto: '.$subject.'

    Messaggio:
    '.$message.'

    |---------END MESSAGE----------|';
    echo "GRAZIE PER AVERCI CONTATTATO. TI RISPONDEREMO NON APPENA POSSIBILE.<br/>Go to <a href='/index.php'>Home Page</a>";
    mail($to, $subject, $body);
    }
    ?>

Regole di scrittura

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