Domanda

Sto usando una funzione di posta elettronica, che sta inviando indietro un messaggio che è contenuto all'interno del corpo $ variabile. Voglio inviare il messaggio a me stesso con alcune parole in grassetto e una serie di tag di interruzione.

Ecco il mio codice (heredoc sintassi):

$body = <<<CTS
<h1><b>Order for $name on datevariable</b></h1><br /><br />

<b><u>Administrative Details</u></b><br />
<b>Employee ID:</b> $id<br />
<b>Cost Center:</b> $cost_center<br />
<b>Approved By:</b> $approved_by<br />
<b>Delivery Bldg:</b> $delivery_bldg<br />
<b>Delivery Contact Email:</b> $delivery_contact<br />
<b>Ext:</b> $del_contact_ext<br />
CTS;

Per qualche ragione quando ricevo l'e-mail, sembra che questo:

<h1><b>Order for James Important on datevariable</b></h1><br /><br />
<b><u>Administrative Details</u></b><br />
<b>Employee ID:</b> 213123<br />
<b>Cost Center:</b> 132123<br />
<b>Approved By:</b> Chris Seckla<br />
<b>Delivery Bldg:</b> 6<br />
<b>Delivery Contact Email:</b> test@email.com<br />
<b>Ext:</b> 56<br />

Si riempie i valori delle variabili, ma per qualche ragione ignora i tag html. Qualcuno può dirmi come risolvere questo problema?

Inoltre, ignora i tag di interruzione e mettendo solo rompe quando esco da una linea di spazi bianchi. Tutte le idee su questo?

È stato utile?

Soluzione

Se questo è un e-mail, è necessario impostare il tipo MIME text / html invece di text / plain. In caso contrario, il lettore e-mail sarà interpretare il messaggio come testo normale e ignorare tutti i tag HTML.

Per esempio, diciamo che si sta chiamando la funzione mail in questo modo:

mail( $to, $subject, $message, $headers )

In $headers, avresti bisogno di qualcosa in questo senso (corretto per il vostro caso particolare, ovviamente):

$headers = "From: webmaster@example.com\r\n";
$headers .= "Reply-To: webmaster@example.com\r\n";
$headers .= "Content-Type: text/html";

Se si desidera inviare testo normale e-mail HTML (così i lettori non-HTML può vedere una versione pulita del email senza tutti quei tag), vorrei suggerire di dare un'occhiata a questo tutorial per una spiegazione più dettagliata delle email multipart.

Altri suggerimenti

È necessario impostare un header aggiuntivo per l'invio da php per l'e-mail per visualizzare usando il formato HTML:

Content-Type: text / html; charset = qualunque

Assicurarsi di inviare l'intestazione che afferma che è HTML ...

Esempio:

mail('email@domain.com', 'Subject',
'<html><body><b>Hello</b></body></html>',
"To: The Receiver <recipient@domain.com>\n" .
"From: The Sender <email@domain.com>\n" .
"MIME-Version: 1.0\n" .
"Content-type: text/html; charset=iso-8859-1"); 

Se si desidera inviare la posta con PHP ti consiglierei con PEAR pacchetto Mail_Mime invece di funzione di posta elettronica normale

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top