Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2012
    Messaggi
    14

    Problema phpmailer,jquery e smtp

    Buonasera a tutti.....
    Ho un problema sul mio sito sulla spedizione di mail da una pagina di contatto..
    utilizzo questo codice sulla pagina html per la creazione dei pulsanti e inserimento del testo :
    Codice PHP:
    <center>
    <
    h1>Contattatemi per qualsiasi dubbioinformazioni...ect......    </h1></center>

    <
    form id="formail" method="post" action="">
              
        <
    p>&nbsp;</p>
        <
    p><span class="required">*</span>Nome e Cognome:   
          <
    input type="text" id="nome" name="nome2"  value="" />
          <
    br />
        </
    p>
        <
    p><span class="required">*</span>E-mail:
          <
    input type="text" id="email" name="email2"  value="" />
          <
    br />
        </
    p>
        <
    p>Indirizzo:
          <
    input type="text" id="indirizzo" name="indirizzo2"  value="" /><br />
        </
    p>
        <
    p>Città:
          <
    input type="text" id="citta" name="città2"  value="" /><br />
        </
    p>
        <
    p><span class="required">*</span>Spazio per richiesta informazioni:    </p>
        <
    p>
          <
    textarea name="messaggio" cols="50" rows="5" id="messaggio"></textarea>
          </
    p>
          <
    p><b><span class="required">*</span>Accetti le condizioni? &nbspSI <input name="trattamento_dati" id="dati"type="radio" value="accetto" >
            
    NO <input type="radio" name="trattamento_dati" value="non_accetto" checked>
          </
    b></p>
          <
    p><br />
          </
    p>
           <
    div id="risposta">
        </
    div>
            <
    input name="invia" type="submit" id="invia" form="formail" value="Invia" />
         
        </
    form
    Oltre a questo ho un file con il seguente codice di controllo:
    Codice PHP:
     $(document).ready(function(){
        $(
    "#invia").click(function(){
        
        
    //Recuperiamo tutte le variabili
            
    var valid '';
            var 
    isr ' è richiesto.</p>';
            var 
    name = $("#nome").val();
            var 
    email = $("#email").val();
            var 
    indirizzo = $("#indirizzo").val();
            var 
    citta = $("#citta").val();
            var 
    messaggio = $("#messaggio").val();
            var 
    dati = $("input[type=radio][name=trattamento_dati]:checked").val();
        
    //Eseguiamo una serie di controlli
            
    if (name.length<1) {
                
    valid += '<p>Un nome valido'+isr;
            }
            if (!
    email.match(/^([a-z0-9._-]+@[a-z0-9._-]+\.[a-z]{2,4}$)/i)) {
                
    valid += '<p>Un indirizzo e-mail valido'+isr;
            }
            if (
    messaggio.length<1) {
                
    valid += '<p>Un messaggio valido' +isr;
            }
             if(
    dati == 'non_accetto'){
                
    valid += '<p>Accetta le condizioni';
            }
            
        
    //Se i controlli non vengono superati, appare il messaggio di errore.
            
    if (valid!='') {
                $(
    "#risposta").fadeIn("slow");
                $(
    "#risposta").html("<p><b>Errore:</b></p>"+valid);
                $(
    "#risposta").css("background-color","#ffc0c0");
            }
            
    //Se i controlli vengono superati, compare un messaggio di invio in corso
            
    else {
                var 
    datastr ='name=' name '&email=' email '&indirizzo=' indirizzo '&citta=' citta '&messaggio=' encodeURIComponent(messaggio);
                $(
    "#risposta").css("display""block");
                $(
    "#risposta").css("background-color","#FFFFA0");
                $(
    "#risposta").html("<p>Invio del messaggio in corso..<br /></p>");
                $(
    "#risposta").fadeIn("slow");
                
    setTimeout("send('"+datastr+"')",2000);
            }
            return 
    false;
        });
    });
    //Creazione della funzione di invio. Si baserà sul nostro file php "mail.php".
    function send(datastr){
        $.
    ajax({    
            
    type"POST",
            
    url"contattami.php",
            
    datadatastr,
            
    cachefalse,
            
    success: function(html){
            $(
    "#risposta").fadeIn("slow");
            $(
    "#risposta").html(html);
            $(
    "#risposta").css("background-color","#0EE570");
            
    setTimeout('$("#risposta").fadeOut("slow")',10000);
        }
        });

    e infine una pagina php per l'invio delle mail:
    Codice PHP:
    <?php
    //Recuperiamo tutte le variabili
        
    $mail $_POST['email'];
        
    $name $_POST['name'];
        
    $indirizzo $_POST['indirizzo'];
        
    $citta $_POST['citta'];
        
    $text $_POST['messaggio'];
        
    $ip $_SERVER['REMOTE_ADDR'];
        
    $subject "".$name." vuole un informazione...";
    //Qui andrà inserito il tuo indirizzo e-mail
    $from "mia mail@miodominio.it";
    $to "mia mail@gmail.com";

    $ora date ("H:i:s"); 
    $data date ("d/m/Y");

    //Creazione del mesaggio da inviare
    $message "Hai ricevuto una e-mail da: <strong>".$name."</strong>, <strong>".$mail."</strong> il $data alle $ora.<br /><br />";
    $message .= "Indirizzo: <strong>".$indirizzo."</strong><br /><br />";
    $message .= "Città: <strong>".$citta."</strong><br /><br />";
    $message .= "Messaggio: <strong><br />".$text."</strong><br /><br />";
    $message .= "IP: ".$ip."<br />";
    $headers "From: $from \n";
    $headers .= "Reply-To: $from \n";
    $headers .= "MIME-Version: 1.0 \n";
    $headers .= "Content-Type: text/html; charset=ISO-8859-1 \n";

    //Se l'e-mail viene spedita correttamente, compare un messaggio di avvenuto invio
     
    if(mail($to$subject,$message$headers)){
        echo 
    "<p>Messaggio inviato con successo</p>";
    }
    //Altrimenti un messaggio di errore
    else{ 
        echo 
    "<p>Ci sono stati degli errori nell'invio della e-mail.</p>";
    }
    con questa funziona solamente che le mail arrivano in ritardo e per questo volevo passare attraverso un server smtp di gmail...
    volevo usare questo file al posto del php precedente:
    Codice PHP:
    <?php
    //Recuperiamo tutte le variabili
        
    $mail $_POST['email'];
        
    $name $_POST['name'];
        
    $indirizzo $_POST['indirizzo'];
        
    $citta $_POST['citta'];
        
    $text $_POST['messaggio'];
        
    $ip $_SERVER['REMOTE_ADDR'];
        
    $subject "".$name." vuole un informazione...";
    //Qui andrà inserito il tuo indirizzo e-mail
    $from "mia mail@miodominio.it";
    $to "mia mail@gmail.com";

    $ora date ("H:i:s"); 
    $data date ("d/m/Y");

    require_once(
    'class.phpmailer.php');//includiamo la classe
            
    $from_name "Nome del mittente";
            
    $mail = new PHPMailer();  // creiamo l'oggetto
        
    $mail->IsSMTP(); // abilitiamo l'SMTP
        
    $mail->SMTPDebug 0;  // debug: 1 = solo messaggi, 2 = errori e messaggi
        
    $mail->SMTPAuth true;  // abilitiamo l'autenticazione
        
    $mail->SMTPSecure 'ssl'// abilitiamo il protocollo ssl richiesto per Gmail
        
    $mail->Host 'smtp.gmail.com'// ecco il server smtp di google
        
    $mail->Port 465// la porta che dobbiamo utilizzare
        
    $mail->Username 'nomimio@gmail.com'//email del nostro account gmail
        
    $mail->Password 'password_gmail'//password del nostro account gmail
        
    $mail->SetFrom($from$from_name);
        
    $mail->Subject $subject;
        
    $mail->Body $body;
            
    $mail->IsHTML(true);
        
    $mail->AddAddress($to);
        if(!
    $mail->Send()) {
            
    $error 'errore mail: '.$mail->ErrorInfo;
        echo 
    "<p>Ci sono stati degli errori nell'invio della e-mail.</p>";
        echo 
    $error;
        } else {
            
    $error 'Messaggio inviato!';
                echo 
    "<p>Messaggio inviato con successo</p>";

        }
    in questo modo qua la mail non viene inviata anzi...
    se il body del messaggio lo lascio vuoto mi viene restituito l'errore che il body è vuoto e la mail non è stata inviata...ma se metto qualcosa sul body non mi viene restituito nulla...

    Riuscite a darmi una mano?

    grazie a tutti

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2015
    Messaggi
    29
    Non capisco perchè utilizzare queste classi...

    Tanto gmail o non gmail, l'arrivo dell'email dipende da molte cose, può essere più o meno rapida, dipende, ripeto.

    Utilizza questo file, secondo me è meglio.. (l'html non è necessario, l'ho messo solo per far capire un attimo; l'html puoi lasciare il tuo)

    Codice PHP:
    <?php

    // forum.html.it php, semplice email system

    ?>

    <html>
    <head>
    </head
    <body>
    <form action="qualcosa.php?do=something" method="post">
    <fieldset>
    <input id="email" name="email" type="email" placeholder="Email" autofocus required >
    <input type="submit" class="submit" name="action" value="Inviami un'email!">
    </fieldset>
    </body>
    </html>


    <?php

    $get     
    $_GET['do']
    $action trim(stripslashes($_POST['action'))     // trim
    $email trim(stripslashes($_POST['email']))    //  trim

    if(isset($email)) {

    if(isset(
    $action) && ($action == "Inviami un'email!")) { 
        
    if(isset(
    $get) && ($get "something")) {

    // Preparo la mail

    $achi $email;      // A chi arriverà l'email? All'indirizzo immesso nel form
    $contenuto "Ciao! Questa è la tua email vero?  ".$email."";  // Contenuto semplice
    $dachi  DaCiao<modulociao@ciao.it>// Da chi arriverà l'email? Da un modulo a caso!
    $soggetto "Ciao!"  // il soggetto dell'email

    if(@mail($achi$soggetto$contenuto$dachi))  /* E' preferibile utilizzare '@mail' che 'mail' */

    {

    echo 
    "Invio mail riuscita!"

                        
    }

    else echo 
    "errore!";

                  }
          }
    }

    ?>
    L'email partirà in questo modo, sicuro al 100%

  3. #3
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    E' preferibile utilizzare '@mail' che 'mail'
    Perchè ?

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    539
    mascherare gli errori anteponendo "@" all'istruzione php, non mi sembra molto serio (soprattutto alla funzione mail),

    ma per il tuo problema,
    Codice PHP:
    $mail->SetFrom($from$from_name); 
    molti provider lo vogliono uguale al titolare della casella di posta che si è autenticato per l'invio
    se tu mettessi il parametro non documentato,
    [PHP][$mail->SMTPDebug = 4;/PHP]
    vedresti il dialogo con il server e potresti riconoscere il motivo del rifiuto
    mentre per rispondere correttamente a chi ha chiesto info e/o altro, puoi usare,
    Codice PHP:
      if(!empty($eM_ReplyTo)) 
        
    $mail->AddReplyTo($eM_ReplyTo$eM_ReplyToName); // rispondere a ... 
    fai qualche prova
    Ultima modifica di marino51; 05-02-2015 a 16:56

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.