Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    Mail in HTML e stile associato

    salve!
    devo mandare una mail in formato html con dentro una table con tanto di stile.
    il problema è che su alcune celle lo stile nn viene interpretato correttamente.
    nel migliore dei casi il testo nn è allineato o nn c'è il bordo.
    a volte però compare addirittura il codice html della cella, il che nn la rende leggibile.
    questo succede sia se la mando a gmail che se leggo la posta su outlook.
    vi posto un pezzo del codice:
    Codice PHP:
    function sendEmailOrder() {
        
    $headers "MIME-Version: 1.0\n";
        
    $headers .= "Content-type: text/html; charset=UTF-8\n";
        
    $headers .= "X-Mailer: PHP\n";
        
    $headers .= "From: area <miaemail@mail.eu>\n";
        
    $testo '<html><body>';
        
    $testo .= '<div>';
        
    $testo .= '[b]Codice cliente:[/b] ' $_SESSION['...'] . ' [b]Ragione sociale:[/b] ' $_SESSION['...'] . '</p>';
        
    $testo .= '</div>
    '
    ;
        
    $articolo NULL;
        
    $articolo_old NULL;
        foreach (
    getTuttiArticoli() as $totArticoli) {
            
    $articolo $totArticoli['articolo_codice'];
            if (
    $articolo_old != $totArticoli['articolo_codice']) {
                
    $testo .= '<table>';
                
    $testo .= '<thead>';
                
    $testo .= '<tr>';
                
    $testo .= '<th style="background-color: silver;border: 1px solid black;">CODICE</th>';
                
    $testo .= '<th style="background-color: silver;border: 1px solid black;">COLORI</th>';
    ............
    }
        
    $testo .= '<table><tr>';
        
    $testo .= '<td style="background-color: silver;border: 1px solid black;">[b]Quantità totale[/b]</td>';
        
    $testo .= '<td style="background-color: silver;border: 1px solid black;">[b]Importo totale[/b]</td>';
        
    $testo .= '</tr><tr>';
        foreach (
    calcolaTotali() as $tot) {
            
    $testo .= '<td style="text-align: center;border: 1px solid black;">' $tot['QtaTot'] . '</td>';
            
    $testo .= '<td style="text-align: center;border: 1px solid black;">' $tot['ImportTot'] . '</td>';
        }
        
    $testo .= '</tr></table>';
        
    $testo .= '</body></html>';
        
    mail('miamail@gmail.com''Ordine'$testo$headers); 
    molte parti del testo sono create dinamicamente da db.
    avete qualche idea?
    ovviamente sia gmail che outlook sono configurati per leggere la posta in formato html.

  2. #2
    Utente di HTML.it L'avatar di homerbit
    Registrato dal
    Dec 2005
    residenza
    Roma
    Messaggi
    1,380
    sicuro che le variabili che leggi da db non contengano apici o virgolette e che quindi possano "disturbare" la formattazione dell'echo?
    Prova ad inviare una mail senza contenuto dinamico, solo con la table e i relativi style
    If you think your users are idiots, only idiots will use it. DropBox

  3. #3
    a memoria nn mi sembra, anche se la certezza assoluta nn posso averla.
    faccio la prova che mi hai detto e ti dico.
    intanto grazie!

  4. #4
    ho provato a cambiare il teso della mail lasciando tutta la struttura ma levando tuttii contenuto presi da db.
    anche in questo caso qualche cella è saltata.
    mi sono mandato più volte la stessa mail e le celle saltate nn sono sempre le stesse.

  5. #5
    Utente di HTML.it L'avatar di homerbit
    Registrato dal
    Dec 2005
    residenza
    Roma
    Messaggi
    1,380
    ho testato il seguente codice ed è perfettamenente funzionante
    Codice PHP:
    function sendEmailOrder() {
        
    $headers "MIME-Version: 1.0\n";
        
    $headers .= "Content-type: text/html; charset=UTF-8\n";
        
    $headers .= "X-Mailer: PHP\n";
        
    $headers .= "From: area <miaemail@mail.eu>\n";
        
    $testo '<html><body>';
        
    $testo .= '<div>';
        
    $testo .= '[b]Codice cliente:[/b] ' $_SESSION['...'] . ' [b]Ragione sociale:[/b] ' $_SESSION['...'] . '</p>';
        
    $testo .= '</div>
    '
    ;

        
    $testo .= '<table><tr>';
        
    $testo .= '<td style="background-color: silver;border: 1px solid black;">[b]Quantità totale[/b]</td>';
        
    $testo .= '<td style="background-color: silver;border: 1px solid black;">[b]Importo totale[/b]</td>';
        
    $testo .= '</tr><tr>';
         
    $testo .= '</tr></table>';
        
    $testo .= '</body></html>';
        
    mail('miamail@mail.it''Ordine'$testo$headers);


    riguardo la formattazione delle tabelle assicurati che il codice sia valido e corretto, rispettando la giusta sintassi per una table, poi per il border puoi optare per il codice colore black: #000

    Assicurati che ciascun foreach apra e chiuda correttamente tutti i table tags, potresti far generare il codice html e poi appoggiarti ad un validatore per sicurezza...

    Io ho letto la mail direttamente su client e non su remoto ma non credo ci siano problemi di sorta

    If you think your users are idiots, only idiots will use it. DropBox

  6. #6
    su client che intendi?
    perchè la stranezza è che se stampo il testo con echo direttamente sulla pagina nn ho problemi.
    è quando la leggo come mail che ho problemi.
    e di questo ne sono sicuro perchè questo stesso testo lo usco anche in altre pagine e su nessuna ho problemi di formattazione.
    testato anche su più browser.
    è solo sulla mail.

  7. #7
    Utente di HTML.it L'avatar di homerbit
    Registrato dal
    Dec 2005
    residenza
    Roma
    Messaggi
    1,380
    letta su live mail
    cmq se il codice che ti ho postato lo visualizzi correttamente anche tu vuol dire che l'eventuale errore sarà da un'altra parte
    If you think your users are idiots, only idiots will use it. DropBox

  8. #8
    sarà nei cicli allora.
    solo che mi sembra strano che sulla pagina nn ho errori e sulla mail si.
    bho.....

  9. #9
    Utente di HTML.it L'avatar di homerbit
    Registrato dal
    Dec 2005
    residenza
    Roma
    Messaggi
    1,380
    il primo foreach qnd lo chiudi? ...prima di mail spero
    If you think your users are idiots, only idiots will use it. DropBox

  10. #10
    si anche perchè sennò me ne sarei accorto con tutte le mail che mi sarebbero arrivate .
    mail è l'ultima riga prima della chiusura della funzione.

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.