PHP html email, используя html шаблон - PullRequest
4 голосов
/ 16 ноября 2009

, поэтому я пытаюсь сделать html почтовую систему, и мой html я хочу быть шаблоном, хранящимся в отдельном файле, например:

<div clas="headr"></div>
    <div class="content"></div>
<div class="footer"></div>

когда я хочу отправить письмо, я хочу, чтобы мой почтовый контент (из формы ввода) указывал в этом файле div.content, а затем отправлял весь HTML (шаблон + отправленный текст). Каков наилучший способ сделать это? я думаю что-то вроде:

  1. импортировать шаблон в мой php, который отправляет почту
  2. найдите div с классом "content" и добавьте в него отправленный текст
  3. отправить письмо

но я не знаю, как "найти" этот div и записать в него отправленный текст.

Ответы [ 5 ]

17 голосов
/ 16 ноября 2009

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

<div clas="header"></div>
<div class="content">{{content}}</div>
<div class="footer"></div>

Затем замените заполнитель на ваш контент:

$content = 'Whatever you want to insert...';
$tpl = file_get_contents('yourtemplate.html');
$tpl = str_replace('{{content}}', $content, $tpl);
mail($tpl, ...);
17 голосов
/ 16 ноября 2009

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

template.html:

<div clas="headr"></div>
    <div class="content"><?php echo $body; ?></div>
<div class="footer"></div>

Затем, чтобы загрузить его, в вашем коде PHP:

$body = "Put this into the content tag...";
ob_start();
include("template.html");
$email = ob_get_clean();

Редактировать : в этом случае, возможно, немного излишне использовать мой метод вместо простой замены, но если вместо замены всего сообщения электронной почты вам нужен более сложный шаблон, он делает легко. E.g.:

<table>
 <tr>
  <td>Name:</td>
  <td><?php echo $name; ?></td>
 </tr>
 <tr>
  <td>Email:</td>
  <td><?php echo $email; ?></td>
 </tr>
</table>

Он очень гибкий и исключает необходимость иметь слишком много переменных для замены, и, что более важно, хранит html в вашем коде.

2 голосов
/ 16 ноября 2009

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

Используйте класс, такой как PHPMailer , чтобы легко отправлять электронные письма в формате HTML.

1 голос
/ 17 мая 2016

Пожалуйста, найдите широкий ответ на сайте Programmers.StackExchange , который включает в себя различные подходы к шаблонам писем PHP .

Простые решения PHP могут быть:

0 голосов
/ 16 ноября 2009

Если вы хотите избежать использования заполнителей или кода PHP внутри вашего шаблона, вы можете взглянуть на phpQuery , который является портом PHP jQuery.

В вашем примере вы хотели бы что-то похожее на это (см. документы ):

<?php
$body = 'The body of your email message';

$template = file_get_contents('template.html');
$email = pq('div.content').html($body);
?>

Может показаться немного излишним, но если вы намереваетесь добавить больше тех же функций, основанных на селекторе CSS, просто захотите убрать грязные руки ваших дизайнеров из PHP, это может быть хорошим решением.

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