PHP-скрипт электронной почты с пользовательским почтовым телом

Я использую PHP-скрипт электронной почты для контактной формы. Для формы имеется шесть полей:

  • имя
  • Эл. адрес
  • Номер телефона
  • Дата бронирования
  • Время бронирования
  • Комментарии

Также есть скрытое поле honeypot для роботов. Сценарий PHP выглядит следующим образом:

<?php $robotest = $_POST['robotest']; //just testin' for robots $recipient = "info@mydomain.com"; //recipient $email = ($_POST['email']); //senders e-mail adress if((filter_var($email, FILTER_VALIDATE_EMAIL)) && ($robotest == "")) { $Name = ($_POST['name']); //senders name $mail_body = !!!----> WHAT DO I PUT HERE <----!!!! $subject = "Porter Inquiry"; //subject $header = "From: ". $Name . " <" . $email . ">\r\n"; //optional headerfields mail($recipient, $subject, $mail_body, $header); //mail command :) } else { print "You've entered an invalid email address!"; } ?> 

Вы заметите выше, где я положил !!!----> WHAT DO I PUT HERE <----!!! , Я не уверен, как получить несколько полей в тело письма. Я хотел бы включить что-то вроде:

 "Hello, You have received a new booking with the following details: Booking Time: ($_POST['time']) Booking Date: ($_POST['date']) Additional customer comments: ($_POST['comments']); Please respond to the customer within 30 minutes on the following phone number: ($_POST['phone']) Warm regards, Robot." 

Я не могу найти какую-либо информацию о том, как успешно достичь этого, очень ценю некоторые рекомендации.

Я немного изменил код Золтана. Должен работать сейчас.

 <?php $robotest = $_POST['robotest']; //just testin' for robots $recipient = "info@mydomain.com"; //recipient $email = ($_POST['email']); //senders e-mail adress if((filter_var($email, FILTER_VALIDATE_EMAIL)) && ($robotest == "")) { $Name = ($_POST['name']); //senders name $mail_body = "Hello, \r\n"; $mail_body .= "You have received a new booking with the following details: \r\n"; $mail_body .= "Booking Time: ({$_POST['time']}) Booking Date: ({$_POST['date']}) \r\n"; $mail_body .= "Additional customer comments: ({$_POST['comments']}); \r\n"; $mail_body .= "Please respond to the customer within 30 minutes on the following phone number: ({$_POST['phone']}) \r\n"; $mail_body .= "Warm regards, \r\n"; $mail_body .= "Robot. \r\n"; $subject = "Porter Inquiry"; //subject $header = "From: ". $Name . " <" . $email . ">\r\n"; //optional headerfields mail($recipient, $subject, $mail_body, $header); //mail command :) } else { print "You've entered an invalid email address!"; } ?> 

Надеюсь, это поможет … и да, это отправит почту, даже если поля пустые (кроме поля получателя)

Dins

Попробуйте отправить HTML-письмо

Измените свой почтовый ящик таким образом (конечно, вы можете сделать больше изменений в нем)

 $mailBody = "Hello,<br/><br/>"; $mailBody .= "You have received a new booking with the following details:<br/><br/>"; $mailBody .= "Booking Time: ".$_POST['time']." Booking Date: ".$_POST['date']." <br/><br/><br/>"; $mailBody .= "Additional customer comments: ".$_POST['comments']."<br/><br/>"; $mailBody .= "Please respond to the customer within 30 minutes on the following<br/>"; $mailBody .= "phone number: ".$_POST['phone']."<br/><br/>"; $mailBody .= "Warm regards,<br/><br/>"; $mailBody .= "Robot."; 

и $header как это

 $header = "From: ". $Name . " <" . $email . ">\r\n"; $header .= "MIME-Version: 1.0\r\n"; $header .= "Content-Type: text/html; charset=ISO-8859-1\r\n"; 

Вы положили туда почти то, что вы указали в своем вопросе. Вы можете записать его как очень длинную строку или использовать оператор конкатенации:

 $mail_body = "Hello, \r\n"; $mail_body .= "You have received a new booking with the following details: \r\n"; $mail_body .= "Booking Time: (" . $_POST['time'] .") Booking Date: (". $_POST['date'] .") \r\n"; $mail_body .= "Additional customer comments: (". $_POST['comments'] ."); \r\n"; $mail_body .= "Please respond to the customer within 30 minutes on the following phone number: (". $_POST['phone'] .") \r\n"; $mail_body .= "Warm regards, \r\n"; $mail_body .= "Robot. \r\n"; 

Раскрытие информации: Я являюсь одним из разработчиков AlphaMail

Если вы хотите справиться с этим очень легко, я бы рекомендовал вам использовать Транзакционный почтовый сервис, например:

  • AlphaMail
  • мандрил
  • SendGrid

Зачем?

  • Вам не нужно так много думать о доставке электронной почты.
  • Статистика. Давайте отследим все отправленные / клики / открытия / отскоки.
  • Часто используется веб-служба вместо SMTP. Т.е. проще в обращении.
  • Чистый код (по крайней мере, если вы используете AlphaMail, который отделяет данные от презентации).
  • Масштабируемое и будущее доказательство.

Если вы решите пойти с AlphaMail, вы можете использовать PHP-клиент AlphaMail .

Пример:

 include_once("comfirm.alphamail.client/emailservice.class.php"); $email_service = AlphaMailEmailService::create() ->setServiceUrl("http://api.amail.io/v1") ->setApiToken("YOUR-ACCOUNT-API-TOKEN-HERE"); $data = new stdClass(); $data->booking = new stdClass(); $data->booking->time = $_POST['time']; $data->booking->date = $_POST['date']; $data->booking->comment = $_POST['comments']; $data->booking->phone = $_POST['phone']; $response = $email_service->queue(EmailMessagePayload::create() ->setProjectId(12345) // Your AlphaMail project (determines template, options, etc) ->setSender(new EmailContact("Sender Company Name", "from@example.com")) ->setReceiver(new EmailContact("Joe Doe", "to@example.org")) ->setBodyObject($data) // Any serializable object ); 

Еще одно преимущество AlphaMail заключается в том, что вы можете редактировать свои шаблоны непосредственно на панели управления AlphaMail , и вы можете форматировать свои письма с использованием языка шаблонов Comlang . Это позволит создавать шаблоны, подобные приведенным ниже (пример текстовой версии, но вы можете легко создать HTML-версию).

 Hello, You have received a new booking with the following details: Booking Time: <# payload.booking.time #> Booking Date: <# payload.booking.date #> Additional customer comments: <# payload.booking.comment #> Please respond to the customer within 30 minutes on the following phone number: <# payload.booking.phone #> Warm regards, Robot