内部发送PHP电子邮件副本(使用BCC)

时间:2019-02-01 20:31:44

标签: php email

我需要能够填写的密码保护网页的形式,然后将信息发送给最终用户,但它也需要一个副本发送给仿制药销售额的电子邮件地址。

我已经有一段时间了,并且设法让它发送电子邮件,但最终只能发送到noreply地址。

index.php

<form method="post" name="process.php" action="process.php">
<p>Customer Name:</p><br><input type="text" name="name">
<p>Customer Email Address:</p><br><input type="text" name="email">
<p>Customer Order Number:</p><br><input type="text" name="order">
<p>Customer Order Date:</p><br><input type="text" name="date">
<p>Total Paid:</p><br><input type="text" name="cost">
<p>Tracking Number:</p><br><input type="text" name="tracking">
<br>

process.php

<?php
  $name = $_POST['name'];
  $email = $_POST['email'];
  $order = $_POST['order'];
  $date = $_POST['date'];
  $cost = $_POST['cost'];
  $tracking = $_POST['tracking'];
?>

<?php
	$email_from = "noreply@example.com";

	$email_subject = "Your order details";

	$email_body = "Hello,\n $name.\n".
    "Your order number is:\n $order".
    "Your order was placed on:\n $date".
    "Your total cost is:\n $cost".
    "Your tracking number is:\n $tracking".
    "You can track your order on our website.\n".
    "Thanks,\n examplecompany \n".
 

  $to = $email.
  $bcc = "sales@example.com".
  $headers = "From: noreply@example.com \r\n";

  $headers .= "Reply-To: constact@example.com \r\n";

  mail($to,$email_subject,$email_body);
  

 ?>

 <p>Sending Email…</p>
 <meta http-equiv="refresh" content="10000;URL='https://staff.example.com/fulfilment/confirmorder/#useremail'"/>

应该发生的是电子邮件应发送给用户及复印件(用BCC)到销售@电子邮件地址。目前,该电子邮件不再发送,并且订单中的表单输入也不包括在内。

上面的代码的形式(这是在相同的目录中的一个单独的页面上)和process.php文档。

任何帮助,将不胜感激得到电子邮件发送到两个用户和销售客户,也包括实际的形式输入。

UPDATE: And with a HTML email body 有了HTML电子邮件正文,我可以更轻松地包含链接和公司徽标。

$email_body = '
<body>
<div>
Hello,<?php $name ?><br><br>
Your order number is: <strong><?php $order ?></strong><br>
Your order was placed on: <strong><?php $date ?></strong><br>
Your total cost is: <strong>£<?php $cost ?></strong><br>
Your tracking number is: <strong><?php $tracking ?></strong><br>
You can track your order on our website <a href="https://example.com/track">here</a>.<br><br>
Thanks,<br>examplecompany.<br>
<a href="https://example.com"><img src="https://example/assets/images/logo.png" alt="examplecompany logo" width="200px"></a>
</div>';

除了显示PHP $name标签等之外,所有内容都可以在文本电子邮件中工作。

2 个答案:

答案 0 :(得分:1)

这里$to = $email.和这里$bcc = "sales@example.com".似乎不应该跟在后面的点,而应该是分号。要发送到Bcc必须添加一个多个报头是这样的:$headers .= "Bcc: somebodyelse@example.com\r\n";

这里的末尾应该是分号而不是点:

$email_body = "Hello,\n $name.\n".
"Your order number is:\n $order".
"Your order was placed on:\n $date".
"Your total cost is:\n $cost".
"Your tracking number is:\n $tracking".
"You can track your order on our website.\n".
"Thanks,\n examplecompany \n".

所以下面您可以看到工作代码:

<?php
$name = $_POST['name'];
$email = $_POST['email'];
$order = $_POST['order'];
$date = $_POST['date'];
$cost = $_POST['cost'];
$tracking = $_POST['tracking'];

$email_from = "noreply@example.com";

$email_subject = "Your order details";

$email_body = "Hello,\n $name.\n".
"Your order number is:\n $order".
"Your order was placed on:\n $date".
"Your total cost is:\n $cost".
"Your tracking number is:\n $tracking".
"You can track your order on our website.\n".
"Thanks,\n examplecompany \n";


$to = $email;
$headers = "From: noreply@example.com \r\n";
$headers .= "Bcc: sales@example.com \r\n";
$headers .= "Reply-To: constact@example.com \r\n";

mail($to, $email_subject, $email_body, $headers);


?>

UDATE: 要包含在PHP字符串变量,则需要用双引号",而不是单一的服务'。但是在这种情况下,您需要转义HTML代码所需的所有双引号,为此,您必须在双引号之前放反斜杠,例如\"。所以,下面是你的PHP字符串与工作代码HTML标签:

$email_body = " 
<body> 
<div> 
Hello, $name<br><br> 
Your order number is: <strong> $order</strong><br> 
Your order was placed on: <strong> $date</strong><br> 
Your total cost is: <strong>£ $cost</strong><br> 
Your tracking number is: <strong> $tracking</strong><br> 
You can track your order on our website <a href=\"https://example.com/track\">here</a>.<br><br> 
Thanks,<br>examplecompany.<br> 
<a href=\"https://example.com\"><img src=\"https://example/assets/images/logo.png\" alt=\"examplecompany logo\" width=\"200px\"></a> 
</div>";

答案 1 :(得分:0)

似乎您的$bcc变量没有在任何地方使用。您可以将内容添加到头部,这应有助于。看起来像这样:$headers .= "Bcc: sales@example.com\r\n";

您也可以发送邮件的两倍,但它会产生多一点的开销:

mail($to,$email_subject,$email_body);
mail($bcc,$email_subject,$email_body);

我希望这会有所帮助。