2009-05-27 2 views
2

私は変数$ bodyの中に含まれているメッセージを返送するメール関数を使用しています。特定の言葉を太字で、いくつかの改行タグで自分自身にメッセージを送りたい。ここでPHPで文字列にhtmlタグが表示されるのはなぜですか?

は私のコード(ヒアドキュメント構文)である:

$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; 

何らかの理由で、私は電子メールを受信したとき、それは次のようになります。

<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> [email protected]<br /> 
<b>Ext:</b> 56<br /> 

これは、変数の値ではなく、いくつかのために塗りつぶしreasonはhtmlタグを無視します。誰かがこれを修正する方法を教えてくださいできますか?

また、区切りタグを無視し、空白行を残したときに区切りを入れるだけです。これに関するアイデア?

+0

コメントありがとう!それは素晴らしかった!私は気づいたので、私は気づいたので、MIMEとcharsetは大きな問題ですか?それを言及したことはありませんでしたが、Marcはそれに関係なく働きましたか? – zeckdude

+0

MIMEバージョンは、通常、添付ファイルを扱う場合にのみ必要です。文字セットは、大部分のユーザーの電子メールクライアントがデフォルトで扱うことのできない、国際文字やその他の奇妙な文字セットがある場合にのみ重要です。それを含めることは良い習慣ですが、私は簡潔にすることを選びませんでした。 –

答えて

16

これは電子メールの場合、text/plainの代わりにMIMEタイプをtext/htmlに設定する必要があります。そうしないと、電子メールリーダーがメッセージをプレーンテキストとして解釈し、すべてのhtmlタグを無視します。

は、たとえば、あなたがこのようなmail機能呼び出していると言うことができます:$headers

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

は、あなたがこれらの線に沿って何かを必要があると思います(もちろん、あなたの特定のケースに合わせて調整):

$headers = "From: [email protected]\r\n"; 
$headers .= "Reply-To: [email protected]\r\n"; 
$headers .= "Content-Type: text/html"; 

プレーンテキストとHTMLの両方の電子メールを送信する場合(html以外の読者は、これらのタグをすべて除いたクリーンなバージョンの電子メールを見ることができます)、詳細な解説はthisチュートリアルをご覧ください複数の電子メールの国。

3

HTML形式を使用して表示するための電子メールのために、PHPから送信するときに、追加のヘッダーを設定する必要があります。

のContent-Type:text/htmlのを。 charset = whatever

3

あなたはそれがHTMLで述べヘッダを送信することを確認してください...

例:あなたはPHPでメールを送信したい場合は、私が代わりにPEAR Mail_Mimeパッケージであなたをお勧めします

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

「MIME-Version:1.0 \ n」という行を含めると、Apple MailはHTMLタグを本文に表示します。メール表示HTMLを削除する必要があります。なぜこの人ですか? –

+0

ヘッダーを追加する必要があります。Content-Type:text/html – Phobis

0

普通のメール機能

関連する問題