Visualizzazione dei risultati da 1 a 8 su 8

Discussione: errore con phpmailer

  1. #1

    errore con phpmailer

    Ciao a tutti,
    vorrei fare un form che invii direttamente il contenuto dei campi ad un indirizzo email predefinito (info@miodominio.it) tramite la classe phpmailer.
    Di seguito il codice HTML:


    <form id="Form_Prenotazione" action="../../mail.php" enctype="text/plain" method="post">

    <div>
    <label for="Nome">Nome*</label>
    <input id="Nome" class="mandatory" name="nome" type="text" />
    </div>
    <div>
    <label for="Cognome">Cognome*</label>
    <input id="Cognome" class="mandatory" name="cognome" type="text" />
    </div>
    <div>
    <label for="Anno di nascita">Anno di Nascita*</label>
    <input id="Anno di nascita" class="mandatory valNumber valMaxLength[4]" name="anno_di_ nascita" type="text" />
    </div>
    <div>
    <input id="invia" type="submit" value="Invia" />
    <input type="reset" value="Reset" />
    </div>
    </form>


    Quando clicco su "invia" esce questo errore:
    Notice: Undefined index: nome in C:\...\mail.php on line 16
    Notice: Undefined index: cognome in C:\...\mail.php on line 17
    Notice: Undefined index: anno_di_nascita in C:\...\mail.php on line 18

    Di seguito il codice PHP:


    <?php


    //includiamo la classe PHPMailer
    require "PHPMailer/class.phpmailer.php";


    //istanziamo la classe
    $mail = new PHPmailer(true);
    $mail ->IsSMTP();
    $mail -> Host = 'Host'; // Specify main and backup SMTP servers


    //definiamo le intestazioni e il corpo del messaggio
    $mail -> From='mail@dominio.it';
    $mail -> AddAddress('info@miodominio.it');
    $mail -> addReplyTo('info@example.com', 'Information');
    $mail -> Subject='Richiesta prenotazione online';
    $mail -> Body = $_POST["nome"];
    $mail -> Body = $_POST["cognome"];
    $mail -> Body = $_POST["anno_di_nascita"];




    //definiamo i comportamenti in caso di invio corretto o di errore
    if(!$mail -> Send()){
    echo $mail -> ErrorInfo;
    }else{
    echo 'Richiesta inviata correttamente. ';
    }


    //chiudiamo la connessione
    $mail -> SmtpClose();
    unset($mail);
    ?>




    Che c'è di sbagliato???

  2. #2
    aa
    Ultima modifica di andrea6568; 30-07-2014 a 10:49

  3. #3
    Ripeto il messaggio usando i TAG per migliorarne la lettura.

    Ciao a tutti,

    vorrei fare un form che invii direttamente il contenuto dei campi ad un indirizzo email predefinito (info@miodominio.it) tramite la classe phpmailer.
    Di seguito il codice HTML:

    codice:
    <form id="Form_Prenotazione" action="../../mail.php" enctype="text/plain" method="post">
    
    <div>
    <label for="Nome">Nome*</label>
    <input id="Nome" class="mandatory" name="nome" type="text" />
    </div>
    <div>
    <label for="Cognome">Cognome*</label>
    <input id="Cognome" class="mandatory" name="cognome" type="text" />
    </div>
    <div>
    <label for="Anno di nascita">Anno di Nascita*</label>
    <input id="Anno di nascita" class="mandatory valNumber valMaxLength[4]" name="anno_di_ nascita" type="text" />
    </div>
    <div>
    <input id="invia" type="submit" value="Invia" />
    <input type="reset" value="Reset" />
    </div>
    </form>
    Quando clicco su "invia" esce questo errore:
    Notice: Undefined index: nome in mail.php on line 16
    Notice: Undefined index: cognome mail.php on line 17
    Notice: Undefined index: anno_di_nascita in mail.php on line 18

    Di seguito il codice PHP:

    Codice PHP:
    <?php

    //includiamo la classe PHPMailer
    require "PHPMailer/class.phpmailer.php";


    //istanziamo la classe
    $mail = new PHPmailer(true);
    $mail ->IsSMTP();
    $mail -> Host 'Host';    // Specify main and backup SMTP servers

    //definiamo le intestazioni e il corpo del messaggio
    $mail -> From='mail@dominio.it'
    $mail -> AddAddress('info@miodominio.it');
    $mail -> addReplyTo('info@example.com''Information');
    $mail -> Subject='Richiesta prenotazione online'
    $mail -> Body $_POST["nome"];
    $mail -> Body $_POST["cognome"];
    $mail -> Body $_POST["anno_di_nascita"];

    //definiamo i comportamenti in caso di invio corretto o di errore
    if(!$mail -> Send()){ 
    echo 
    $mail -> ErrorInfo
    }else{ 
    echo 
    'Richiesta inviata correttamente. ';
    }

    //chiudiamo la connessione 
    $mail -> SmtpClose(); 
    unset(
    $mail); 
    ?>


    Che c'è di sbagliato???

  4. #4
    Dovresti togliere i parametri per l'SMTP. Non servono quindi avresti una cosa del genere:

    <?php

    //includiamo la classe PHPMailer
    require "PHPMailer/class.phpmailer.php";


    //istanziamo la classe
    $mail = new PHPmailer(true);
    //definiamo le intestazioni e il corpo del messaggio
    $mail -> From='mail@dominio.it';
    $mail->FromName = "Nome";
    $mail -> AddAddress('info@miodominio.it');
    $mail -> addReplyTo('info@example.com', 'Information');
    $mail -> Subject='Richiesta prenotazione online';
    $mail -> Body = $_POST["nome"];
    $mail -> Body = $_POST["cognome"];
    $mail -> Body = $_POST["anno_di_nascita"];

    //definiamo i comportamenti in caso di invio corretto o di errore
    if(!$mail -> Send()){
    echo
    $mail -> ErrorInfo;
    }else{
    echo
    'Richiesta inviata correttamente. ';
    }

    unset(
    $mail);
    ?>



  5. #5
    Grazie per la risposta, ma il problema rimane lo stesso.

    Il problema è che le istruzioni

    Codice PHP:
    $mail -> Body $_POST["nome"];
    $mail -> Body $_POST["cognome"];
    $mail -> Body $_POST["anno_di_nascita"]; 
    non riconoscono le variabili (nome, cognome e anno_di_nascita) impostate nel form HTML ed inviate dal metodo POST .
    Potrebbe essere solo un errore di sintassi?

  6. #6
    Ho aggiunto un'istruzione

    Codice PHP:
    if (isset($_POST['nome']) && isset($_POST['cognome']) && isset($_POST['anno_di_nascita'])) 
    prima di

    Codice PHP:
    $mail -> Body $_POST['nome'];
    $mail -> Body $_POST['cognome'];
    $mail -> Body $_POST['anno_di_nascita']; 
    Ora lo script sembrerebbe funzionare, ma l'errore è

    Message body empty


    Qualche idea?

  7. #7
    Utente di HTML.it L'avatar di Angarat
    Registrato dal
    Nov 2003
    Messaggi
    157
    a meno che non ho letto male il codice, non saprei proprio, l'unica cosa che mi viene in mente è che tu possa avere un header da qualche parte che fa un location e quindi perdi il $_POST per strada.

    hai provato a fare un print_r di $_post, che cosa ti stampa?

    [EDIT] ho detto una cavolata: modifica l'enctype del form in "application/x-www-form-urlencoded"[/EDIT]
    Ultima modifica di Angarat; 30-07-2014 a 15:07

  8. #8
    GRAZIE!!!
    Risolto modificando l'enctype come da tue istruzioni.

    A buon rendere!

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.