Inviare E-mail con Php in formato html

Per inviare una email con tag di formattazione HTML da uno script PHP l’importante è aggiungere l’header alla email che verrà spedita; in questo modo al destinatario arriverà un’email formattata in maniera gradevole tramite l’uso di codice html, invece di un’email in puro testo.

L’esempio seguente presuppone la precedente raccolta di 4 variabili tramite un form – nome, cognome, email, messaggio – ma questo è ininfluente ai fini della questione.

// Intestazioni HTML
$mail_in_html = "MIME-Version: 1.0\n";
$mail_in_html .= "Content-type: text/html; charset=UTF-8\n";
$mail_in_html .= "Content-Transfer-Encoding: 7bit\n";
$mail_in_html .= "From: $nome <$email>\n\n";
//
// corpo del messaggio
$body = "<b>Nome:</b> $nome<br>
<b>Cognome:</b> $cognome<br>
<b>Email:</b> $email<br><br>
<b>Messaggio:</b><br>$messaggio<br>";
//
// invio
$send_contact=mail("email@xyz.com", "Oggetto del messaggio", $body, $mail_in_html);

10 pensieri su “Inviare E-mail con Php in formato html”

  1. Guarda il mio problema E’ questo:
    devo inviare mail ad un indirizzo ben preciso da un form tipo:
    nome...................... Cognome..................
    Indirizzo.................. email......................
    computer usato................ Cellulare...................
    Telefono........................ fax.................

    etc. in modo che in outlook arrivi una mail formattato come il form di invio:
    nome...................... Cognome..................
    Indirizzo.................. email......................
    computer usato................ Cellulare...................
    Telefono........................ fax.................

    e che i campi non compilano non vengano inviati.
    Sarà anche semplice pero’……….
    Grazie per la risposta.

    Marco

    1. Ciao darkhouse,
      potresti spiegare meglio cosa vorresti fare, cos’hai già fatto e qual’è il tuo problema? …magari usa anche un po’ di punteggiatura, che aiuta molto chi sta leggendo 😉

      1. be come ho detto prima ho cambiato nell’hedaer il charset da iso a utf-8 ma nulla i caratteri speciali come “è, ò, à etc…” li visuallizza sempre con caratteri strani tipo A.. ed altri.

        Cosa sto facendo un banale campo testo che invia l’email tipo questo:

        pagina form:

        pagina php:
        $email=trim($_REQUEST(“email”));
        $text=trim($_REQUEST(“testo”));

        $sendmail=”MIME-Version: 1.0\r\n”;
        $sendmail.=”Content-type: text/html; charset=utf-8\r\n”;
        $sendmail.=”from: email@email.it“;

        mail($email,”Contatto”,$text,$sendmail);

        niente di così compliacto ma ti ripeto che nelle email i carateri speciali li fa vedere con caratteri tipo quelli che converte mysql.

        Per risolvere la situazione ho dovuto fare una funzione con dei replace.

        1. Di solito è proprio un problema tipico di quando i caratteri vengono inviati da una pagina con codifica iso-8859-1 e questi caratteri vengono visualizzati in pagina con codifica UTF-8 o viceversa.
          Poi…

          L’UTF-8 va impostato prima di tutto su Apache, poi su MySQL sia nelle tabelle che nelle connessioni, poi su PHP possibilmente sul file php.ini, altrimenti in questo modo:
          ini_set(‘default_charset’, ‘utf-8′);
          L’istruzione dell’articolo infatti non imposta la codifica di PHP ma manda un header HTML, cosa che non serve se dopo nel documento abbiamo il metatag. Laddove non si ha l’accesso alle impostazioni di MySQL, si può dare questa query in PHP prima di tutte le altre:
          mysql_query(“SET NAMES ‘utf8′”);
          Ma ancora così può non bastare!

          fonte: http://blog.merlinox.com/utf-8-e-caratteri-sbagliati/

Rispondi a darkhouse Annulla risposta

Il tuo indirizzo email non sarà pubblicato.

You can add images to your comment by clicking here.