Сохраненное HTML-содержимое с использованием надстрочных черт и повторное использование полосок.
Это плохо.Я не знаю, почему вы это сделали, но если вы намеревались избегать запросов, используйте mysql_real_escape_string () или функцию analgoue для вашего драйвера БД (или используйте параметризованные запросы).Если вы хотите, я не знаю, продезинфицировать HTML?ну, это бесполезно.Поэтому нет необходимости добавлять косые черты здесь по любой причине.
Но проблема в том, что я не получаю код PHP, выполняемый при отправке почты с использованием этого содержимого HTML.
Поскольку ваш контент возвращается в виде строки, поэтому PHP будет читать его как таковой, включая теги.
Самое грязное решение, И ВЫСОКО ОБЕСПЕЧЕННОЕ , использует eval () чтобы оценить код php и выполнить его.Но это очень рискованно и может привести к серьезным проблемам с безопасностью, поэтому я даже не собираюсь показывать вам пример:)
BEST SOLUTION - использовать какой-то видшаблонной системы.Я не предлагаю использовать Smarty или другой полноценный шаблонизатор, но вы можете развернуть простой анализатор пользовательского кода, который может работать следующим образом:
Вы сохраняете свои переменные, используя заполнитель, например
{{variable_text}} {{recipient}} {{address}}
или что-то в этом роде.Вы просто замените то, что вам нужно, поэтому в вашем PHP-скрипте, который читает это письмо, вы можете сделать так:
$change = array('recipient' => 'John Smith',
'address' => 'Unknown Avenue, 666',
'variable_text' => 'We are glad to invite you to');
$text = '<p>To: {{recipient}}.</p>
<p>Address: {{address}}.</p>
Message: Dear{{recipient}}<br />{{variable_text}}';
foreach($change as $k => $v)
{
$text = str_replace('{{'.$k.'}}', $v, $text);
}