0

PHP で注文確認メールを作成する必要があります。確認メールを含むphpファイルがあります(注文を処理するメインphpにロードされたときに出力される変数がいくつかあるためです。次のようになります:

**orderConf.php**
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
</body>
Dear <?php echo $firstName." ".$lastName; ?> .....
.....
</body></html>

次に、注文を処理するメインの php に、この変数を配置するメール関数があります: orderProcessing.php

$message = include ("orderConf.php");

これは正しい方法でしょうか?または、確認メールを別の方法で作成する必要がありますか?

ありがとう

4

3 に答える 3

1

これは、 HEREDOCで問題ない数少ないケースの 1 つです。

<?php
$message - <<<HERE
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
</body>
Dear $firstName $lastName
.....
</body></html>
HERE;

それからちょうど

 include ("orderConf.php");

そしてあなたの$message変数を持っています。

別のオプションは、出力バッファリングを使用することです。

于 2013-04-17T15:02:39.780 に答える
0

この方法では、orderConf.php の内容を出力するだけです。メッセージは、このファイルによって返されます。

<?php
return <<<MSG <html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
</body>
Dear <?php echo $firstName." ".$lastName; ?> .....
.....
</body></html>
MSG;

または、ob_ 関数を使用することもできます。

<?php
ob_start();
include('orderConif.php');
$message = ob_get_contents();
ob_end_clean();
于 2013-04-17T15:03:54.177 に答える
-1

そのような変数にファイルを含めることはできません。file_get_contents() を使用する必要があります。ただし、IMOはそれを行うための最良の方法ではありません。代わりに、メッセージを変数にロードし、同じ変数を使用して電子メールを送信する必要があります。以下の例:

$body = '<div>Dear' . $firstName . ' ' . $lastName . '... rest of your message</div>';

$body でインライン スタイルを使用するようにしてください。表は、電子メールでより適切に機能するため、おそらく良い考えです。

次に、使用するのは次のとおりです。

$to = recepients address;
$subject = subject;
$headers = "From: " . strip_tags($_POST['req-email']) . "\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
mail($to, $subject, '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><body>' . $body . '</body></html>', $headers);
于 2013-04-17T15:06:04.903 に答える