【问题标题】:Sending PHP email copies internally (with BCC)在内部发送 PHP 电子邮件副本(使用密件抄送)
【发布时间】:2019-06-26 11:02:56
【问题描述】:

我需要能够在受密码保护的网页上填写表格,然后将信息发送给最终用户,但它还需要将副本发送到通用销售电子邮件地址。

我已经有一段时间了,并设法让它发送电子邮件,但他们最终只发送到 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'"/>

应该发生的事情是电子邮件应该发送给用户,并将副本(使用密件抄送)发送到 sales@ 电子邮件地址。目前电子邮件不再发送,并且表单中的输入不包含在订单中。

上面的代码有表单(在同一目录的单独页面上)和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 标记等之外,文本电子邮件中的所有内容都有效。

【问题讨论】:

  • 您究竟是在哪里试图发送到密件抄送地址?我没有看到 $bcc 实际上在任何地方使用过
  • 嘿,@PatrickQ 我只想向下订单的用户和销售团队发送相同的电子邮件。如果这有意义吗?道歉
  • 如果 PHPMailer、SwitfMailer 或类似的久经考验的邮件库,我也建议您使用一个。它们不仅会为您提供更详细的 API,而且还可以更轻松地设置为使用 SMTP 服务器(我会推荐),并且您的代码将独立于服务器配置(更便携)。
  • 是的,这是有道理的。没有意义的是为什么您似乎没有尝试实际这样做。如果您想向销售团队发送电子邮件,为什么不做任何事情呢?

标签: php email


【解决方案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);


?>

日期: 要在 PHP 字符串中包含变量,您需要使用双引号 " 而不是单引号 '。但是在这种情况下,您需要转义 HTML 代码所需的任何双引号,为此您必须在双引号之前放回斜杠,例如:\"。下面是带有 HTML 标签的 PHP 字符串的工作代码:

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

【讨论】:

  • 我知道我有点接近了。太棒了,谢谢。
  • 嘿,我已更新问题以包含电子邮件正文的 HTML。对此有何想法?
  • @phphelpplease 嗨!请查看答案中的更新。
  • @phphelpplease如果您希望有人收到您向他们发送消息的通知,请@ 签名和昵称。
【解决方案2】:

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

您也可以发送两次邮件,但会产生更多开销:

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

我希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2012-03-20
    • 2013-06-08
    • 1970-01-01
    • 2020-10-10
    • 1970-01-01
    • 1970-01-01
    • 2016-01-12
    • 2011-03-31
    相关资源
    最近更新 更多