Отправка копий электронной почты PHP внутри (с BCC)

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

Я занимался этим некоторое время, и мне удалось заставить его отправлять электронные письма, но в конечном итоге они отправляются только на адрес 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 = "[email protected]";

	$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 = "[email protected]".
  $headers = "From: [email protected] \r\n";

  $headers .= "Reply-To: [email protected] \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 и т.д.

Куда именно вам пытающийся отправить на адрес скрытой копии? Я нигде не вижу $bcc на самом деле использовал.

Patrick Q 01.02.2019 21:37

Привет, @PatrickQ, я просто хочу отправить одно и то же письмо как пользователю, разместившему заказ, так и отделу продаж. Если это имеет смысл? Извинения

phphelpplease 01.02.2019 21:38

Я бы также порекомендовал вам использовать одну из проверенных почтовых библиотек, таких как PHPMailer, SwitfMailer или аналогичные. Они не только предоставят вам более подробный API, но их также будет проще настроить для использования SMTP-сервера (что я бы порекомендовал), и ваш код не будет зависеть от конфигурации сервера (более переносимый).

M. Eriksson 01.02.2019 21:39

Да, это имеет смысл. Что не имеет смысла, так это то, почему вы, кажется, не пытаетесь сделать это на самом деле. Если вы хотите отправить электронное письмо отделу продаж, почему вы ничего не делаете для этого?

Patrick Q 01.02.2019 21:40
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
4
54
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

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

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

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

Ответ принят как подходящий

Кажется, что здесь: $to = $email. и здесь: $bcc = "[email protected]". должны быть не следующие точки, а точка с запятой. Чтобы отправить Bcc, вам нужно добавить еще один заголовок, например: $headers .= "Bcc: [email protected]\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 = "[email protected]";

$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: [email protected] \r\n";
$headers .= "Bcc: [email protected] \r\n";
$headers .= "Reply-To: [email protected] \r\n";

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


?>

Обновлено: Чтобы включить переменные в строку 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>";

Я знал, что был близок. Удивительно, спасибо.

phphelpplease 01.02.2019 22:08

Эй, я обновил вопрос, чтобы включить HTML для тела письма. Есть идеи по этому поводу?

phphelpplease 01.02.2019 22:36

@phphelpпожалуйста, привет! Пожалуйста, посмотрите на обновление в ответе.

Andrew Shaban 02.02.2019 11:56

@phphelpпожалуйста Если вы хотите, чтобы кто-то был уведомлен о ваших сообщениях, используйте подпись @ и никнейм.

Andrew Shaban 02.02.2019 11:57

Другие вопросы по теме