Отправка копий электронной почты PHP внутри (с помощью BCC) - PullRequest
0 голосов
/ 01 февраля 2019

Мне нужно иметь возможность заполнить форму на защищенной паролем веб-странице, которая затем отправляет информацию конечному пользователю, но также необходимо отправить копию на общий электронный адрес продаж.

Я занимался этим некоторое время и сумел заставить его отправлять электронные письма, но они заканчивали тем, что отправляли его только по обычному адресу.

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) на электронный адрес 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 и т. Д.

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019

Кажется, что здесь: $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-кода, чтобы сделать это, вы должны поставить обратную косую черту перед двойной кавычкой, например thhis: \".Ниже приведен рабочий код вашей строки 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>";
0 голосов
/ 01 февраля 2019

Кажется, ваша $bcc переменная нигде не используется.Вы можете добавить содержимое в шапку, что должно помочь.Это выглядело бы так: $headers .= "Bcc: sales@example.com\r\n";

Вы также можете отправить письмо дважды, хотя это создает немного больше накладных расходов:

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

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...