Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Invio mail in html

  1. #1

    Invio mail in html

    Ciao
    un'agenzia con la quale collaboro ha un problema con una applicazione web per la creazione e l'invio di newsletter e mi hanno chiesto di cercare di risolvere il problema.

    analizzando l'applicazione ho notato che, se l'html non contiene virgolette, ad es.
    codice:
    testo in grassetto
    funziona tutto regolarmente.

    il problema nasce dove ci sono le virgolette...in pratica nel 99% dei casi, perchè gli attributi hmtl dovrebbero essere tutti virgolettati.

    ad esempio con un link di questo tipo
    codice:
    <a href:"http://www.miolink.it">mio link</a>
    ho verificato che nella tabella del database (di tipo text) si memorizza tutto regolarmente (e così anche nella pagina php di archivio delle newsletter, dove la variabile che contiene il corpo dell'email viene "ripescata" dal database)...se vado invece a leggere direttamente il codice html dell'email, una volta ricevuta, vengono aggiunti un apice singolo ed un carattere di escape, davanti ad ogni virgoletta, per cui il link assume questa forma
    codice:
    <a href:'\"http://www.miolink.it\"'>mio link</a>
    di conseguenza l'html viene visualizzato in modo completamente sballato sul client di chi riceve le mail.

    Cosa può essere la causa di queste strane aggiunte?

    grazie

  2. #2
    Utente di HTML.it L'avatar di erme2
    Registrato dal
    Oct 2002
    Messaggi
    177
    Normalment l'aggiunta di apici serve a proteggerti dalla sql Injection tu comunque posta un po di codice forse docrebbe esserci un probelma nella lettura e ricomposizione dei dati
    eRMéS! RM98!
    "...è mai possibile oh porco di un cane, che le avventure in codesto reame, debban risolversi tutte con grandi puttane!..." - (Carlo Martello ritorna dalla battaglia di Poitiers -Fabrizio De Andrè/Paolo Villaggio)

  3. #3
    Questa è la parte di codice che compone e invia la newsletter e ne salva una copia nell'archivio.

    Codice PHP:
    /**********Sezione speciale che si occupa dell'invio delle mail************/
            
            // PRIMA COMPONGO LA NEWSLETTER
            
    $headers .= "From:".EMAIL_ADMIN."\n";
            
    $headers .= "X-Sender:\n";
            
    $headers .= "X-Mailer: PHP/".phpversion(); 
            if(
    $inviainhtml=="ok"){
            
    $headers .= "MIME-Version: 1.0\r\n";
            
    $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
            }
            
    $message  $corpo_newsletter;
            if(
    $inviainhtml=="ok"){
            
    $message .="
    -------------------------------
    "
    ;
            }else{
            
    $message .="\n-------------------------------\n";
            }
            
    $message .=$firma_newsletter;
            if(
    $inviainhtml=="ok"){
            
    $message .="
    -------------------------------
    "
    ;
            }else{
            
    $message .="\n-------------------------------\n";
            }
            
    $message .="Per cancellare l'iscrizione a questa newsletter\n";
            
    $message .="Clicca questo link\n";
            
    $subject $oggetto_newsletter;

        
    $sql="select indirizzo,riconoscimento from ".TABELLA_INDIRIZZI." where id_newsletter=".$id_newsletter;
        
    $rcDati mysql_query($sql,$db);
        echo 
    mysql_num_rows($rcDati);
        while (
    $line mysql_fetch_array($rcDatiMYSQL_NUM)){
            if(
    $inviainhtml=="ok"){
            
    $message .="<a href=\"http://".$HTTP_HOST."/admin/newsletter/public/depennare.php?n=".$line[1]."\">Cancellazione</a>";
            }else{
            
    $message .="http://".$HTTP_HOST."/admin/newsletter/public/depennare.php?n=".$line[1];
            }
            @
    mail($line[0],$subject$message$headers);
            
        }
    mysql_free_result($rcDati);
        
        
    // ho inviato ma mail ,ora ne salvo una copia nella cartella
        // newsletter repository.
        
        
    if($salva_copia_newsletter=="ok"){
            
    $oggetto $oggetto_newsletter;
            
    $corpo =$corpo_newsletter;
            
    $data date("YmjHi");
                
                
    $sql_repository="insert into newsletter_repository (oggetto,corpo,id_newsletter,time) values ('$oggetto','$corpo','$id_newsletter','$data')";
                
    mysql_query($sql_repository);
            }    

        
    //exit;
                
    echo"<script>window.location='newsletter.php'</script> ";
        
        break;

    c'è qualcosa che vi fa pensare che potrebbe essere la causa dell'errore?

  4. #4
    Il fatto è che nella tabella del database l'hmtl appare scritto correttamente...senza escape aggiunti.
    perciò cosa può essere che lo aggiunge alla mail?

    MIME e content type, secondo voi, sono ok???


  5. #5

  6. #6
    Fare un replace non potrebbe risolvere?

  7. #7
    magari ci provo...però se non so cosa causa le aggiunte poi rischio di ritrovarmele lo stesso.

    comq grazie

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 © 2024 vBulletin Solutions, Inc. All rights reserved.