Мне нужно иметь возможность заполнить форму на защищенной паролем веб-странице, которая затем отправляет информацию конечному пользователю, но также необходимо отправить копию на общий адрес электронной почты для продаж.
Я занимался этим некоторое время, и мне удалось заставить его отправлять электронные письма, но в конечном итоге они отправляются только на адрес 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 и т.д.
Привет, @PatrickQ, я просто хочу отправить одно и то же письмо как пользователю, разместившему заказ, так и отделу продаж. Если это имеет смысл? Извинения
Я бы также порекомендовал вам использовать одну из проверенных почтовых библиотек, таких как PHPMailer, SwitfMailer или аналогичные. Они не только предоставят вам более подробный API, но их также будет проще настроить для использования SMTP-сервера (что я бы порекомендовал), и ваш код не будет зависеть от конфигурации сервера (более переносимый).
Да, это имеет смысл. Что не имеет смысла, так это то, почему вы, кажется, не пытаетесь сделать это на самом деле. Если вы хотите отправить электронное письмо отделу продаж, почему вы ничего не делаете для этого?






Кажется, ваша переменная $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>";
Я знал, что был близок. Удивительно, спасибо.
Эй, я обновил вопрос, чтобы включить HTML для тела письма. Есть идеи по этому поводу?
@phphelpпожалуйста, привет! Пожалуйста, посмотрите на обновление в ответе.
@phphelpпожалуйста Если вы хотите, чтобы кто-то был уведомлен о ваших сообщениях, используйте подпись @ и никнейм.
Куда именно вам пытающийся отправить на адрес скрытой копии? Я нигде не вижу
$bccна самом деле использовал.