Я отправляю htmlmail используя CakeEmail в моем проекте. Я использую структуру таблицы в своем файле макета электронной почты и сохранил свой заменяемый текст в базе данных. Функция Mail работает нормально, она добавляет содержимое базы данных в макет электронной почты перед отправкой. Но расклад стола ломается, когда я получаю почту. Я узнал, что функция рендеринга в CakeEmail.php добавляет <p>
теги для каждой строки кода, который я сохранил в базе данных.
(int) 32 => ' <table align="center" border="0" cellspacing="0" cellpadding="0" >',
(int) 33 => ' <tbody> <tr><td><p> <tr></p>',
(int) 34 => '<p> <td style="padding:0;margin:0;"></p>',
(int) 35 => '<p> <h2 style="color:#404040;font-size:24px;font-weight:bold;line-height:22px;padding:0;margin:0;letter-spacing:0.015 em; font-family: arial,sans-serif;">Activate Account</h2></p>',
(int) 36 => '<p> </td></p>',
(int) 37 => '<p> </tr></p>',
(int) 38 => '<p> </p>',
(int) 39 => ' <tr><td></tbody>',
(int) 40 => ' </table>',
Как я могу отправить заменить текст базы данных без <p>
элемент.
Запись в базе данных такая
<table style="margin-top: 80px" width="630" align="center" border="0" cellspacing="0" cellpadding="0" > <tbody> <tr><td style="padding:0;margin:0;"> <h2 style="color:#404040;font-size:24px;font-weight:bold;line-height:22px;padding:0;margin:0;letter-spacing:0.015 em; font-family: arial,sans-serif;">Activate Account</h2> </td></tr></tbody> </table>
Линии завернуты в <p>
элементы в шаблоне элемента электронной почты HTML по умолчанию, который можно найти в app/View/Emails/html/default.ctp
:
$content = explode("\n", $content);
foreach ($content as $line):
echo '<p> ' . $line . "</p>\n";
endforeach;
https://github.com/cakephp/cakephp/blob/2.3.0/app/View/Emails/html/default.ctp
Измените шаблон в соответствии со своими потребностями, вероятно, вы просто хотите echo $content;
,
Других решений пока нет …