Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Как использовать HTML в "Шаблоны E-Mail сообщений" ?

Как использовать HTML в "Шаблоны E-Mail сообщений" ?


     22.12.2012    Все вопросы » Общие вопросы по PHP    5132

вопрос
Как использовать HTML в "Шаблоны E-Mail сообщений" ?
На сайте видел похожие новости но не было ответа.
И так, пробывал я вот что:
Открыл файл: /engine/inc/email.php
Нашел вот что:

        $find = array ("<", ">");
        $replace = array ("&lt;", "&gt;");
    
    $reg_mail_text = $db->safesql(str_replace( $find, $replace, $_POST['reg_mail_text'] ) );
    $feed_mail_text = $db->safesql(str_replace( $find, $replace, $_POST['feed_mail_text'] ) );
    $lost_mail_text = $db->safesql(str_replace( $find, $replace, $_POST['lost_mail_text'] ) );
    $new_news_text = $db->safesql(str_replace( $find, $replace, $_POST['new_news_text'] ) );
    $new_comments_text = $db->safesql(str_replace( $find, $replace, $_POST['new_comments_text'] ) );
    $new_pm_text = $db->safesql(str_replace( $find, $replace, $_POST['new_pm_text'] ) );


Заенил на:
/*$find = array ("<", ">");
    $replace = array ("&lt;", "&gt;"); */
    
    $reg_mail_text = $db->safesql(str_replace( $find, $replace, $_POST['reg_mail_text'] ) );
    $feed_mail_text = $db->safesql(/*str_replace*/( /* $find, $replace, */ $_POST['feed_mail_text'] ) );
    $lost_mail_text = $db->safesql(str_replace( $find, $replace, $_POST['lost_mail_text'] ) );
    $new_news_text = $db->safesql(str_replace( $find, $replace, $_POST['new_news_text'] ) );
    $new_comments_text = $db->safesql(str_replace( $find, $replace, $_POST['new_comments_text'] ) );
    $new_pm_text = $db->safesql(str_replace( $find, $replace, $_POST['new_pm_text'] ) );



Но на почту все равно приходит отформатированное от HTML письмо.
Помогите решить проблему

Ответил: dj-avtosh


если дле стандарт mail класс то по типу $mail->html = 1;

17 комментариев

BR0kEN
Эксперт

BR0kEN - 22 декабря 2012 23:51 -

Нужно писать парсер. А точнее скопировать необходимое из parse.class.php, но с заменой\установкой новых переменных.

AvAtAr
Юзер

AvAtAr - 22 декабря 2012 23:53 -

Чтобы HTML работал, нужно ещё MIME-тип установить: text/html
В любом модуле находишь:
 include_once ENGINE_DIR . '/classes/mail.class.php';
   $mail = new dle_mail( $config );

Нужно указать значение второго параметр (использовать html? да/нет) в конструкторе класса.
Вот так долно получиться:
 include_once ENGINE_DIR . '/classes/mail.class.php';
   $mail = new dle_mail($config, true);


Автор: Andrey™ большое ему спасибо!

Markls
Юзер

Markls - 5 июня 2014 10:03 -

Где это редактировать?

ПафНутиЙ
Админ

ПафНутиЙ - 24 декабря 2012 09:31 -

добавьте в ответ.

Каков вопрос - таков и ответ. Просто помните об этом.

franzus
Юзер

franzus - 10 июня 2013 23:35 -

Уже приходят письма в формате html но не преобразуются.
Приходят в таком виде:
<br> На нашем сайте Вам прислали новое сообщение.<br> <b>С текстом</b>
Что делать?
Поставил "разрешения" вторым аргументом в строке:
$mail = new dle_mail( $config );

Но результат только то что появились "<\>"

dj-avtosh
шашлычник

dj-avtosh - 11 июня 2013 10:07 -

$mail->html = 1; после строчки с new mail

skype: elhan.isaev

Sander
Эксперт

Sander - 11 июня 2013 14:07 -

Ты наверно хотел написать:
$mail->html_mail = 1;

Но это дублирует то, что я написал:
function dle_mail($config, $is_html = false) {
.....
$this->html_mail = $is_html;

SanDev.pro - мой блог.

ICQ: 404-037-556
Skype: Sander8804

franzus
Юзер

franzus - 12 июля 2013 21:52 -

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

dj-avtosh
шашлычник

dj-avtosh - 12 июля 2013 23:31 -

напишите в icq)

skype: elhan.isaev

колбаскин
Юзер

колбаскин - 16 июля 2013 12:49 -

И все же как сделать чтобы работал html при отправке регистраций, лички и прочего?

Tomich
Юзер

Tomich - 20 января 2014 22:16 -

Кто-то может дать рабочую инструкцию?

vitnet
Эксперт

vitnet - 5 июня 2014 11:08 -

Все очень просто, вот часть кода из моего файла
include_once ENGINE_DIR . '/classes/mail.class.php';
$mail = new dle_mail( $config, true );

$row = $db->super_query( "SELECT template FROM " . PREFIX . "_email WHERE name='Ваша колонка!' LIMIT 0,1" );
    
$row['template'] = html_entity_decode( stripslashes( $row['template'] ), ENT_QUOTES, $config['charset'] );
$row['template'] = str_replace( "{username}", $name, $row['template'] );
$row['template'] = str_replace( "{date}", langdate( "j F Y H:i", $_TIME ), $row['template'] );
...

MaxGooRoo
Юзер

MaxGooRoo - 13 июня 2014 11:37 -

Сделал все как тут писали.
Часть писем работает корректно, HTML код преобразуется в нормальное письмо. Но не все.
Вот feedback отказывается работать, хотя сделал вне изменения как в email.php так и в feedback.php

Julius123
Юзер

Julius123 - 10 июля 2014 19:35 -

Тоже очень интересует, дайте пожалуйста пошаговую инструкцию.

vitnet
Эксперт

vitnet - 10 июля 2014 19:52 -

Я же вам показал пример, вам остается только изменить те файлы из которых вы хотите получать письма с использованием HTML.

Есть еще вариант, но сейчас поделится нет возможности );

Julius123
Юзер

Julius123 - 10 июля 2014 20:06 -

Цитата: vitnet
Я же вам показал пример, вам остается только изменить те файлы из которых вы хотите получать письма с использованием HTML.

Я хочу получать все уведомления в html, какие именно файлы мне нужно редактировать? То что вы написали это все что нужно редактировать в файлах и больше ничего изменять не нужно?

Julius123
Юзер

Julius123 - 10 июля 2014 20:33 -

изменил файл /engine/modules/feedback.php вот так но письма из обратной связи приходят вот так: http://450363.androidy.web.hosting-test.net/123.png

-------------------------------------------------------------------------------

/engine/modules + ajax/feedback.php

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх