• User

    Grazie per la risposta..
    il mio problema è proprio il fatto che la mail viene spedita perfettamente ma il contenuto non viene memorizzato nel database..
    quindi il messaggio effettivo arriva a destinazione ma si "rifiuta" di andare a memorizzarsi nel db..


  • User Attivo

    Quindi la mail contiene tutte le informazioni, compreso l'eventuale messaggio "incollato", mentre nel db non arriva niente ($mex e/o $mex2 sono vuoti)?


  • User

    esatto, e nel db non memorizza nulla nemmeno gli altri campi input $ogg, $int, $data ecc.


  • User Attivo

    Riesci a postare il codice per l'invio della mail oltre che per il db?

    Mi sono accorto adesso, INSERT INTO lista_messaggi(data, ... è una parola chiave di SQL, prova a convertire la query in questo modo:

    INSERT INTO lista_messaggi(data, ...

    ` in linux = ALT GR + '
    in windows = ALT + 96


  • User

    Certo ecco il codice per l'invio (ho omesso una parte che si occupa di altro se vuoi te lo scrivo lo stesso):

    <?php
    $db = @mysql_select_db($database_mailing,$mailing);
    $sql = "SELECT * FROM email";
    $query = mysql_query ($sql, $mailing) or die ("impossibile eseguire la query");
    
    while ($row=@mysql_fetch_array ($query)) {
    
    $mail = new PHPMailer();
    $mail->From     = "[email protected]";
    $mail->FromName = "newsletter";
    $mail->AddBCC($row['EMAIL']);
    $mail->IsHTML(true);
    
    //$mailBody = '<table><tr><td><img alt="Nanologico" src="cid:nanologico" /></td></tr></table>';    
    $mailBody = '<div style="width:800px; margin:0 auto; font: 12px/1.4 Verdana,Arial,sans-serif; background:#FFF; color: #444; text-align: center;"><div><table width="100%" style="background-image:url(link);border:1px solid #CCC)"><tr><td width="17%" align="center"><a href="link"><img src="link" border="0" align="middle" alt="a" width="65" height="114"style="margin: 5px 15px 5px 0"></a></td><td width="83%" align="center"><a href="link"><img src="link" alt="logo" width=179 height=38 border=0></a></td>
          </tr></table></div><table border=0 cellspacing=0 cellpadding=5 style="margin:0;font-size:12px;width:800px">
    <tbody style="border:1px;"><tr>
        <td colspan="3" valign=top style="border-left:1px solid; border-right:1px solid; font:16px/1.4 Verdana, Geneva, sans-serif; text-align: center;">';
    $mailBody .= $_POST['intestazione'];
    $mailBody .= '</td></tr><tr><td style="width:140px;border:1px solid" valign=top>
    <table width="100%" border="0" cellspacing="10"><tr><td><a href="'.$_POST['link1'] .'"><img src="';
    $mailBody .= 'link'.$pathn1 .'" border="0"></a></td></tr><tr><td><a href="'.$_POST['link2'] .'"><img src="';    
    $mailBody .= 'link'.$pathn2 .'" border="0"></a></td></tr><tr><td><a href="'.$_POST['link3'] .'"><img src="';
    $mailBody .= 'link'.$pathn3 .'" border="0"></a></td></tr><tr><td><a href="'.$_POST['link4'] .'"><img src="';    
    $mailBody .= 'link'.$pathn4 .'" border="0"></a></td></tr><tr><td><a href="'.$_POST['link5'] .'"><img src="';
    $mailBody .= 'link'.$pathn5 .'" border="0"></a></td></tr><tr><td><a href="'.$_POST['link6'] .'"><img src="';
    $mailBody .= 'link'.$pathn6 .'" border="0"></a></td></tr><tr><td>';
    $mailBody .= '</td></tr></table><td style="text-align: left;border-top:1px solid #ccc;" valign=top>';
    $mailBody .= stripslashes($_POST['messaggio']);
    $mailBody .= '</td><td style="background: #ffffff;border-left:1px solid #ccc;border-right:1px solid #ccc;border-top:1px solid #ccc;" valign=top><table width="100%" style="font: 12px/1.4 Verdana,Arial,sans-serif;"><tr><td>';
    $mailBody .= stripslashes($_POST['messaggio_secondario']);
    $mailBody .= '</td></tr></table></td></tr></tbody></table><div style="border:1px solid;background: #ccc;color: #333;text-align:center;font-size:90%">
    <p style="margin:5px">intestazione</p></div><br><div style="font-size:9px;"><p>Qualora  non desideriate ricevere da parte nostra ulteriori informazioni vi preghiamo di  volere inviare una eMail a pippo con l&rsquo;oggetto cancellare. Vi porgiamo le nostre scuse per il disturbo.</p></div></div>';
        $mail->Body .= $mailBody; // assegnare il body in un unico passaggio
        $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;
        header("Refresh: 2; URL=link");
        }
        $db2 = @mysql_select_db($database_email,$email);
    $sql2 = "SELECT * FROM lista_messaggi";
    $query2 = mysql_query ($sql2, $email) or die ("impossibile eseguire la query");
    //$lista = $row['EMAIL']; 
    $mex = stripslashes($_POST['messaggio']);
    $mex2 = stripslashes($_POST['messaggio_secondario']);
    $ogg = $_POST['oggetto'];
    $int = $_POST['intestazione'];
    $data = date ("d-m-Y H:i:s");
    $lnk1 = $_POST['link1'];
    $lnk2 = $_POST['link2'];
    $lnk3 = $_POST['link3'];
    $lnk4 = $_POST['link4'];
    $lnk5 = $_POST['link5'];
    $lnk6 = $_POST['link6'];
        $messaggio = "INSERT INTO lista_messaggi(data,oggetto,intestazione,messaggio,messaggio_secondario,messaggio_completo,img1,img2,img3,img4,img5,img6,link1,link2,link3,link4,link5,link6,allegato1,allegato2,allegato3) VALUES('$data','$ogg','$int','$mex','$mex2','$mailBody','$pathn1','$pathn2','$pathn3','$pathn4','$pathn5','$pathn6','$lnk1','$lnk2','$lnk3','$lnk4','$lnk5','$lnk6','$pathn7','$pathn8','$pathn9')";
    $risultato = mysql_query($messaggio);
        ?>
    

  • User Attivo

    A cosa ti serve un refresh con redirect nel codice:

    
    header("Refresh: 2;  URL=link");
    
    

    Su link c'è l'url della pagina di ritorno.
    Se questo avviene al primo invio dell'email esce dallo script e non salva nulla nel db, inoltre invia solo un'email, cioè la prima che ricava dalla query.
    Modifica in questo modo:

    
    ...
    $mail = new PHPMailer();
    
    while ($row=@mysql_fetch_array ($query)) {
    $mail->AddBCC($row['EMAIL']);
    }
    
    $mail->From     = "[email protected]";
    $mail->FromName = "newsletter";
    ...
    $mail->AddAttachment($_FILES['allegato3']['tmp_name'],$_FILES['allegato3']['name']);
    
    $db2 = @mysql_select_db($database_email,$email);
    ...
    $risultato = mysql_query($messaggio);
    
    $msg_a = "Mail inviata con successo<br />";
    $msg_b = "Si e' verificato un errore nell'invio della mail<br />";
    
    header("Refresh: 5;  URL=link");
    
    if(!$mail->Send())
    	echo $msg_b;
    else
    	echo $msg_a;
    
    

    Ora dovrebbe funzionare.
    Inoltre fa attenzione ad utilizzare header dopo aver fatto echo di qualche cosa, perchè genera errore.


  • User Attivo

    A cosa ti serve un refresh con redirect nel codice:

    
    header("Refresh: 2;  URL=link");
    
    

    Su link c'è l'url della pagina di ritorno.
    Se questo avviene al primo invio dell'email esce dallo script e non salva nulla nel db, inoltre invia solo un'email, cioè la prima che ricava dalla query.
    Modifica in questo modo:

    
    ...
    $mail = new PHPMailer();
    
    while ($row=@mysql_fetch_array ($query)) {
    $mail->AddBCC($row['EMAIL']);
    }
    
    $mail->From     = "[email protected]";
    $mail->FromName = "newsletter";
    ...
    $mail->AddAttachment($_FILES['allegato3']['tmp_name'],$_FILES['allegato3']['name']);
    
    $db2 = @mysql_select_db($database_email,$email);
    ...
    $risultato = mysql_query($messaggio);
    
    $msg_a = "Mail inviata con successo<br />";
    $msg_b = "Si e' verificato un errore nell'invio della mail<br />";
    
    header("Refresh: 5;  URL=link");
    
    if(!$mail->Send())
    	echo $msg_b;
    else
    	echo $msg_a;
    
    

    Ora dovrebbe funzionare.
    Inoltre fa attenzione ad utilizzare header dopo aver fatto echo di qualche cosa, perchè genera errore.


  • User

    Le tue considerazioni sono giuste e ti ringrazio ma il problema persiste..
    cioè se scrivo in mex o mex2 del testo a mano la mail arriva e salva tutto nel db, se copio incollo dell'html esterno la mail arriva ma il db rimane vuoto..
    A questo punto posso provare a cambiare WYSIWYG Editor, giusto per curiosità, e vedere se il problema persiste..
    altro "esperimento" potrebbe essere quello di cambiare server (ormai mi appiglio a tutto :))..


  • User Attivo

    Hai provato ad utilizzare un altro browser?


  • User

    Si certo il problema lo da sia con IE che con Firefox


  • User Attivo

    Prova a fare un echo di tutte le variabili, compresa la query che per inserire il messaggio nel db, poi posta il risultato.
    Forse c'è qualche errore sql con determinati dati contenenti caratteri speciali.


  • User Attivo

    Prova a fare un echo di tutte le variabili, compresa la query che per inserire il messaggio nel db, poi posta il risultato.
    Forse c'è qualche errore sql con determinati dati contenenti caratteri speciali.


  • User

    Mail inviata con successo
    Ecco il testo incollato:
    "ROMA, 2 settembre 2010 - "Annamo a vince". Ecco parte del messaggio che Daniele De Rossi ha spedito a Marco Borriello e che ha contribuito a spostare l'attenzione dell'attaccante da Torino a Roma. Nella conferenza stampa di presentazione, al termine del suo primo allenamento con Ranieri, l'ultimo acquisto giallorosso spiega così la sua scelta: "Rosella Sensi mi ha convinto, ho sentito la passione nelle sue parole. Poi De Rossi mi ha mandato quell'sms bellissimo, ho ancora la pelle d'oca. Mi ha scritto che sarà il miglior momento della mia vita e carriera. Si chiudeva con un annamo a vince"."
    02-09-2010 14:17:59INSERT INTO lista_messaggi(data,oggetto,intestazione,messaggio,messaggio_secondario,messaggio_completo,img1,img2,img3,img4,img5,img6,link1,link2,link3,link4,link5,link6,allegato1,allegato2,allegato3) VALUES('02-09-2010 14:17:59','','','Ecco il testo incollato:
    "ROMA, 2 settembre 2010 - "Annamo a vince". Ecco parte del messaggio che Daniele De Rossi ha spedito a Marco Borriello e che ha contribuito a spostare l'attenzione dell'attaccante da Torino a Roma. Nella conferenza stampa di presentazione, al termine del suo primo allenamento con Ranieri, l'ultimo acquisto giallorosso spiega così la sua scelta: "Rosella Sensi mi ha convinto, ho sentito la passione nelle sue parole. Poi De Rossi mi ha mandato quell'sms bellissimo, ho ancora la pelle d'oca. Mi ha scritto che sarà il miglior momento della mia vita e carriera. Si chiudeva con un annamo a vince"."
    ','','

    qui ho tolto la mail formattata in html
    [CENTER]
    [/CENTER]
    ','images/vuoto.jpg','images/vuoto.jpg','images/vuoto.jpg','images/vuoto.jpg','images/vuoto.jpg','images/vuoto.jpg','','','','','','','upload/','upload/','upload/')


  • User Attivo

    Aggiungi questo è vedi se da errore:

    
    ...
    $risultato = mysql_query($messaggio);
    
    if(!$risultato) {
        die("ERRORE: " . mysql_error());
    }
    
    

  • User Attivo

    Aggiungi questo è vedi se da errore:

    
    ...
    $risultato = mysql_query($messaggio);
    
    if(!$risultato) {
        die("ERRORE: " . mysql_error());
    }
    
    

  • User

    Effettivamente da errore:

    ERRORE: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'venuto il momento che l'Italia si dia una seria politica indust

    e questo quello che ho incollato:
    E' venuto il momento che l'Italia ecc. ecc.


  • User Attivo

    Immaginavo, usa stripslashes() oppure addslashes() sul messaggio che inserisci nel db.


  • User

    Lo avevo già inserito nel codice se vedi prima:

    $mex = stripslashes($_POST['messaggio']);
    $mex2 = stripslashes($_POST['messaggio_secondario']);


  • User Attivo

    Errore mio, ho riletto la documentazione di PHP.
    Devi usare solo addslashes() perche aggiunge lo slashe all'apice, mentre stripslashes() fa il contrario, lo rimuove.
    Quindi nel tuo codice, ogni volta che nella stringa c'è l'apice, viene rimosso l'eventuale slashe generando errore SQL.


  • User Attivo

    Errore mio, ho riletto la documentazione di PHP.
    Devi usare solo addslashes() perche aggiunge lo slashe all'apice, mentre stripslashes() fa il contrario, lo rimuove.
    Quindi nel tuo codice, ogni volta che nella stringa c'è l'apice, viene rimosso l'eventuale slashe generando errore SQL.