在PHP邮件功能中包含订单确认电子邮件

时间:2013-04-17 14:54:49

标签: php function email include

我需要在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中,我有一个mail函数,我在其中放置了这个变量: 的 orderProcessing.php

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

这是正确的方法吗?或者我应该以不同的方式撰写确认电子邮件?

由于

3 个答案:

答案 0 :(得分:1)

这是HEREDOC没事的少数情况之一

<?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变量。

另一种选择是使用output buffering

答案 1 :(得分: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_ functions。

<?php
ob_start();
include('orderConif.php');
$message = ob_get_contents();
ob_end_clean();

答案 2 :(得分:-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);