Visualizzazione dei risultati da 1 a 7 su 7

Discussione: mail formato html

  1. #1

    mail formato html

    Ciao a tutti
    Vengo subito al problema.
    Facendo riferimento ad un articolo di html.it ho impostato una newsletter in php per inviare mail in formato html con immagini.
    Nel testare questo piccolo software indirizzandolo alla mia mail (su mac) visualizzo correttamente la mail nel formato html.
    Provando ad inviarla al mio cliente mi dice che non la visualizza...pensavo dipendesse dal mancato supporto dei MIME ma lui mi dice che altre mail in formato html le visualizza correttamente.
    Posto il codice.
    Codice PHP:
    <?php
    // costruiamo alcune intestazioni generali
    $destinatario "info@destinatario.com";
    $header "From: mittente <info@mittente.com>\n";
    $header .= "X-Mailer: Newsletter\n";

    // generiamo le stringhe utilizzate come separatori
    $boundary "==String_Boundary_x" .md5(time()). "x";
    $boundary2 "==String_Boundary2_y" .md5(time()). "y";

    // costruiamo le intestazioni specifiche per un messaggio
    // con parti relazionate
    $header .= "MIME-Version: 1.0\n";
    $header .= "Content-Type: multipart/related;\n";
    $header .= " type=\"multipart/alternative\";\n";
    $header .= " boundary=\"$boundary\";\n\n";

    $messaggio "Se visualizzi questo testo il tuo programma non supporta i MIME\n\n";

    // il primo segmento del multipart/related
    // è definito come multipart/alternative
    $messaggio .= "--$boundary\n";
    $messaggio .= "Content-Type: multipart/alternative;\n";
    $messaggio .= " boundary=\"$boundary2\";\n\n";

    // sezione alternativa in puro testo
    $messaggio .= "--$boundary2\n";
    $messaggio .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
    $messaggio .= "Content-Transfer-Encoding: 7bit\n\n";
    $messaggio .= "Se non visualizzi la newsletter nel formato html, clicca su seguente link.\n\n";

    // sezione alternativa in formato html
    $messaggio .= "--$boundary2\n";
    $messaggio .= "Content-Type: text/html; charset=\"iso-8859-1\"\n";
    $messaggio .= "Content-Transfer-Encoding: 7bit\n\n";
    $messaggio .= "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">
    <html xmlns=\"http://www.w3.org/1999/xhtml\">
    <head>
    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\" />
    <title>Documento senza titolo</title>
    <style type=\"text/css\" media=\"all\">
    body{
    margin:0;
    padding:15px;
    background:#104e75;
    text-align:center;
    }
    .bordo{
    border:solid 2px #FFCC00;
    }
    </style>
    </head>

    <body>
    <img src=\"cid:newsletter_ok\" width=\"500\" height=\"770\" alt=\"newsletter\" class=\"bordo\" />
    </body>
    </html>\n"
    ;

    // chiusura della sezione multipart/alternative
    $messaggio .= "--$boundary2--\n";

    // seconda sezione del multipart/related contenente l'immagine
    $messaggio .= "--$boundary\n";
    $messaggio .= "Content-ID: <newsletter_ok>\n";
    $messaggio .= "Content-Type: image/jpeg\n";
    $messaggio .= "Content-Transfer-Encoding: base64\n\n";

    $allegato "newsletter_ok.jpg";
    $file fopen($allegato,'rb');
    $data fread($file,filesize($allegato));
    fclose($file);

    $data chunk_split(base64_encode($data));
    $messaggio .= "$data\n\n";

    // chiusura della sezione multipart/related
    $messaggio .= "--$boundary--\n";

    $subject "newsletter";

    if( @
    mail($destinatario$subject$messaggio$header) ) echo "e-mail inviata con successo!";
    else echo 
    "errore nell'invio dell'e-mail!";
    ?>
    non esistono che molteplici parvenze e contraddittorie sembianze della stessa apparenza

  2. #2
    guarda per l'invio ti consiglio di utilizzare la classe PHPMailer, si preoccupa lei di settare in modo corretto header, MIME e quant'altro togliendoti ogni problema...

    se cerchi trovi una pillola in questo forum che spiega come utilizzarla, è veramente molto semplice e comoda!
    « Se nella prima mezz'ora non capisci chi è il pollo, allora il pollo sei tu. » [Thomas "Amarillo Slim" Preston, campione del mondo di poker]

  3. #3
    Intanto ti ringrazio
    Ho già provato la classe phpmailer...ma il cliente mi dice sempre che non la visualizza...mentre altre mail in formato html le visualizza correttamente...proprio non capisco!!!!
    non esistono che molteplici parvenze e contraddittorie sembianze della stessa apparenza

  4. #4
    La classe phpmailer funziona a dovere anche con le mail in html.. Penso che il problema sia proprio il tuo cliente, forse lui pensa di visualizzare altre email in html ma in realtà vede delle immagini... Ti consiglio di testare a fondo questo aspetto.

  5. #5
    Utente di HTML.it L'avatar di lloyd27
    Registrato dal
    Mar 2006
    Messaggi
    256
    Se hai a disposizione php5 lascia stare phpMailer e passa a swift (IMHO), più moderno ed orientato ad oggetti..

  6. #6
    Originariamente inviato da lloyd27
    Se hai a disposizione php5 lascia stare phpMailer e passa a swift (IMHO), più moderno ed orientato ad oggetti..
    Non ho mai usato Swift Mailer ma cercando qua e là non ho trovato molti commenti positivi, anzi sembra molto più pesante di Phpmailer. Comunque ripeto non l'ho mai usato.

  7. #7
    Utente di HTML.it L'avatar di lloyd27
    Registrato dal
    Mar 2006
    Messaggi
    256
    Probabilmente il suo essere più pesante (se è vero poi) viene dall'essere scritto separando molto i componenti in una struttra ad oggetti (cosa che phpmailer non fa proprio, ha due tutto-in-uno), e (cazzata per tutti, importante per me) utilizza una naming convenction decente rispetto a phpMailer. Inoltre sfrutta appieno php5 (nella versione php5, altrimenti c'è la "ridotta" per php4).

    Io per il framework aziendale sto adottando Swift appunto per queste caratteristiche, oltre soprattutto alla mentalità con la quale è scritta. phpMailer lo vedo più come un paio di file scritti tempo fa per semplificare il lavoro in quel momento, ma che poi è rimasta vittima di alcuni errori di progettazione, che si, potrebbero anche renderla più leggera, ma in un architettura full stack ed orientata ad oggetti IMHO il paragone non regge, anche a costo di un leggero overhead in più..

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