• User

    errore invio mail

    Ciao a tutti, ho creato una pagina php per l'invio di una mail a tutti gli utenti del database, il problema nasce quando clicco su send che restituisce Si e' verificato un errore nell'invio della mail..
    la classe utilizzata è phpmailer e il codice è questo:

    <?
    require_once('Connections/cantina.php'); 
    require_once("phpmailer/class.phpm ailer.php");
     
    $db = mysql_select_db($database_cantina,$cantina);
    $id=$_GET['id_cantina'];
    $sql = "SELECT * FROM cantina WHERE id_cantina ='$id'";
    $query = mysql_query ($sql, $cantina) or die ("impossibile eseguire la query"); 
     
     $m ail = new PHPMa iler();
    $m ail->From     = "blòabla";
    $m ail->FromName = "paolibo";
     
    while ($row=mysql_fetch_array ($query))
    {
      $m ail->AddBCC("$row[e mail]");
      $m ail->Body = "Egregio Dott. $row[soci]";
     }
     $m ail->IsHTML(true);
     $m ail->Subject = $_POST['oggetto'];
     $m ail->Body .= $_POST['messaggio'];
     
     if(!$m ail->Send()){
     echo "Si e' verificato un errore nell'invio della m ail";
     }else{
     echo "M ail inviata con successo";
     }
    ?>
    
    ```Grazie in anticipo..
    Paolo

  • User Attivo

    Ciao prova con questo script
    a me funziona
    ciao da danny
    [PHP]
    $result_query_mail=mysql_query("SELECT mail FROM iscritti")
    or die("errore nella query;".mysql_error());
    for($i = 0; $i<mysql_num_rows($result_query_mail); $i++)
    {
    $dati_mail=mysql_fetch_array($result_query_mail);
    $strike="$dati_mail[mail]";
    }

    $testo="Gentile utente
    questa e-mail ti è stata inviata in quanto iscritto/a al Sito pippo
    Per non ricevere più quasta e-mail scrivi a [email protected]
    Distinti Saluti da pippo";
    $destinatario = "$strike";
    $intestazioni= "From:[email protected]";
    $oggetto_mail = "$oggetto";
    $messaggio_mail = "$messaggio"."\n\n"."$testo";
    mail($destinatario,$oggetto_mail, $messaggio_mail, $intestazioni);

    [/PHP]


  • User Attivo

    Ciao e scusami
    lo script non funziona, a dir vero lo invia solo all'ultimo destinatario
    volevo chiedere se qualcuno ha già fatto una cosa del genere
    invio di e-mail agli iscritti, una newsletter
    ciao da danny


  • User Attivo

    Ciao, ho provato a mettere tutto all'interno del ciclo
    dalle prove sembra che tutti la ricevono

    Se qualcuno ha uno script migliore lo posti pure


  • User Attivo

    Ciao Paolibo,
    lo script che ti ha postato danny1975 è il minimo per eseguire l'invio di una mail con PHP, ma proprio per questo è il meglio a disposizione:
    [php]

    $header = "From:[email protected]";

    // costruiamo le intestazioni specifiche per il formato HTML
    $header .= "MIME-Version: 1.0\n";
    $header .= "Content-Type: text/html; charset="UTF-8"\n";
    $header .= "Content-Transfer-Encoding: 7bit\n\n";

    $testo="Gentile utente
    questa e-mail ti è stata inviata in quanto iscritto/a al Sito pippo
    Per non ricevere più questa e-mail scrivi a [email protected]
    Distinti Saluti da pippo";
    $destinatario = "[email protected]";
    $oggetto_mail = "CIAO";
    mail($destinatario,$oggetto_mail, $testo, $header);
    [/php]
    A cosa fai riferimento quando chiedi codice migliore?

    Una dritta:
    Siccome l'invio delle mail di fatto 'blocca' il server, ossia mette in coda le richieste di chi sta visitando il sito, ti conviene considerare l'ipotesi, a fronte di molte email da inviare (diciamo più di 100), di eseguire l'invio a blocchi di 100 email.

    Inviate le prime 100 email, ricarichi la pagina per inviarne altre 100:
    questo fa si che gli utenti ricevano i dati richiesti prima di bloccare il server inviando nuove mail.

    Spero di essere stato chiaro.

    :ciauz:


  • User

    Grazie per le risposte, ma il mio problema è un altro..
    Lo script che io uso sfrutta la classe phpmailer che permette di gestire al meglio l'invio di mail e funziona bene..
    Nel codice interagisco con un db dove sono memorizzate mail e nomi dei soci..
    Per far si che la mail arrivi a tutti i soci utilizzo il while che fa il suo dovere prendendo tutti i dati del db e inviando la mail a tutti e sin qui tutto ok..
    Il problema è il seguente:
    Voglio fare in modo che ad ogni socio la mail arrivi nel formato Egregio Dott. "nomesocio" e per questo memorizzo in una variabile l'id del socio:

    $id=$_GET['id_cantina'];

    poi faccio il select in questo modo:
    $sql = "SELECT * FROM cantina WHERE id_cantina ='$id'";

    e per l'invio uso il while:

    while ($row=mysql_fetch_array ($query))
    {
    $m ail->AddBCC("$row[e mail]");
    $m ail->Body = "Egregio Dott. $row[soci]";

    in questo modo mi esce impossibile inviare il messaggio..

    se tolgo il id_cantina ='$id'";
    la mail arriva correttamente..
    quindi è come se desse fastidio quella variabile..
    Se avete qualche dritta sul perchè di questa anomalia ve ne sarei grato 🙂


  • User Attivo

    Ciao paolibo,
    forse può essere un problema di concatenamento delle stringhe.

    Prova così:
    Se id_cantina è un numero:
    [php]"SELECT * FROM cantina WHERE id_cantina =" . $id;[/php]Se id_cantina non è numero:
    [php]"SELECT * FROM cantina WHERE id_cantina ='" . $id . "'" ;[/php]Poi,
    nella stringa che componi per valorizzare la proprietà body dell'email il punto dopo 'Dott.' forse nella forma attuale da noia. Usa il metodo classico anche qui:
    [php]$mail->Body = "Egregio Dott. " . $row['soci'];[/php]Prova e facci sapere.
    :ciauz:


  • User

    Ho risolto togliendo il where e mettendo tutto nel while e funziona tutto a dovere ecco il codice per chi ne avesse bisogno:

    <?
    require_once("../phpmailer/class.phpmailer.php");
    require_once ("../Connections/cantina.php");
    
    $db = @mysql_select_db($database_cantina,$cantina);
    
    $sql = "SELECT * FROM cantina";
    $query = mysql_query ($sql, $cantina) or die ("impossibile eseguire la query");
    
    while ($row=@mysql_fetch_array ($query)) {
    
    $mail = new PHPMailer();
    $mail->From     = "vostramail";
    $mail->FromName = "vostronome";
    $mail->AddEmbeddedImage("images/logo.jpg", "logo", "logo.jpg", "base64", "image/jpg");
    $mail->AddBCC($row['email']);
    $mail->IsHTML(true);
        
    $mailBody = "Egregio Dott. ";
    $mailBody .= $row['soci'] ."<br />";
    $mailBody .= $_POST['messaggio'];
    $mailBody .= '<br><br><br><table><tr><td><img alt="blabla" src="cid:logo" /></td></tr></table>';
        
        $mail->Body .= $mailBody; 
        $mail->Subject = $_POST['oggetto'];
    $mail->AddAttachment($_FILES['allegato1']['tmp_name'],$_FILES['allegato1']['name']);
    $mail->AddAttachment($_FILES['allegato2']['tmp_name'],$_FILES['allegato2']['name']);
    $mail->AddAttachment($_FILES['allegato3']['tmp_name'],$_FILES['allegato3']['name']);
    
    $msg = "Mail inviata con successo";
        
        if(!$mail->Send()) $msg = "Si e' verificato un errore nell'invio della mail<br />";
        
        echo $msg;
    }
    ?>
    ```Grazie per l'aiuto :)

  • User Attivo

    Ciao,
    forse funzionava anche prima.

    C'è un errore di sintassi:
    [PHP]$mail->Body = "Egregio Dott. $row['soci']";[/PHP]

    anziché:
    [PHP]$mail->Body = "Egregio Dott. $row[soci]";[/PHP]

    Ciao


  • User Attivo

    Ciao paolibo,
    sono contento per te.
    A me invece sorge un problema che oso definire odioso:
    a tutti arrivano le mail tranne a libero.
    Ho provato iversi moduli, ma niente.
    Spero tanto sia un loro problema, perchè in se inviare una meil non è poi cosi difficile, a te come vanno le cose?
    Ciao da danny 1975


  • User

    Prova a togliere il sender e l' smtp e fammi sapere..
    ciao


  • User Attivo

    Ciao,
    non so cosa fare.
    Il codice è quello che ti ho segnalato sopra,
    solo a libero non mi arriva niente.
    Quale sara mail il problema?
    Ciao da danny1975


  • User Attivo

    Ciao danny1975,
    forse è dovuto ad una gestione di sicurezza che attua Libero.it, mi spiego meglio:

    Mi è capitato che le mail scritte ad un amico gli andassero tutte nella cartella SPAM semplicemente perchè lui non aveva mai salvato il mio indirizzo di posta tra i suoi contatti.

    Tu hai salvato l'indirizzo del mittente tra i tuoi contatti?

    Invii email da server segnalati per spam o 'zozzeria' simile?

    Non so, non mi viene in mente altro: non è un problema di software ed è dovuto a qualcos'altro che magari non dipende neanche da te.

    :ciauz:


  • User Attivo

    Ciao,
    sto continuando a mandare mail ed a tutti arivano tranne che a me con la posta di libero
    credo proprio che abbia ragione tu, lo script va bene
    ciao da danny


  • User Attivo

    Ciao a tutti,
    come volevasi dimostrare il cliente mi ha chiesto
    come mai agli iscritti di libero non arrivano le mail?
    quindi sono di nuovo qua a chiedervi aiuto;
    avete voi uno script di invio mail che vada bene?
    Vi ringrazio in anticipo
    ciao da danny 1975