Отправка электронной почты в формате HTML через PHP с переменными и внешним шаблоном HTML - PullRequest
0 голосов
/ 28 февраля 2019

Я пытаюсь отправить письмо через PHP.Первоначально моя переменная $ message была установлена ​​на html, а также на переменные PHP из пользовательского ввода.Это работает нормально - я получаю письма с правильными переменными и все.

Затем я попытался включить некоторую логику, которая проверяет, какой сервис был выбран пользователем из формы, которую он заполнил, иИсходя из этого, содержимое переменной $ message было изменено (т. е. выводимое содержимое html немного отличалось).

Чтобы не иметь длинных файлов с кучей html, я решил переместить html-код в отдельные файлы и установить переменную $ message = file_get_contents ().Письмо отправляется нормально, но мои переменные больше не отображают введенные пользователем данные.Я даже попытался с помощью session_start () в верхней части файла, где HTML-шаблон.

<?php
session_start();

$_SESSION["service"] = $_POST['service'];

if (isset($_POST['submit'])){
  $service = $_POST['service'];
  
  if($_POST['service']=="Service 1"){$message = 'email_template-service-1.php';}
    else $message = file_get_contents("email_template-service-2.php");

    $to = 'email@example.com';
    $subject = 'Subject';
    $headers = 'From: webmaster@example.com' . "\r\n" .
    'Reply-To: webmaster@example.com' . "\r\n" .

    mail($to, $subject, $message, $headers);
    header('Location: /confirmation.php');
}

else {header('Location: /index.php');}
?>

Я что-то здесь упускаю?ТИА!

1 Ответ

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

Лучше было бы просто включить файл и использовать ob_get_clean():

ob_start();
if($_POST['service']=="Service 1") {include 'email_template-service-1.php';}
else include 'email_template-service-2.php';
$message = ob_get_clean();

Все, что отображается между ob_start() и $message = ob_get_clean(), попадет в переменную $message.

...