Не нравятся результаты поиска? Попробуйте другой поиск!

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


     22.12.2012    Общие вопросы по PHP    4539

вопрос
Как использовать 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
163

235 | 275

BR0kEN - 22 декабря 2012 23:51 - Эксперт

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

AvAtAr
1 | 4

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
12

Markls - 5 июня 2014 10:03 - Юзер

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

ПафНутиЙ
1065

3394 | 2433

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

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

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

franzus
7

franzus - 10 июня 2013 23:35 - Юзер

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

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

dj-avtosh
39

1479 | 390

dj-avtosh - 11 июня 2013 10:07 - шашлычник

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

skype: elhan.isaev

Sander
1125

1637 | 1204

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
7

franzus - 12 июля 2013 21:52 - Юзер

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

dj-avtosh
39

1479 | 390

dj-avtosh - 12 июля 2013 23:31 - шашлычник

напишите в icq)

skype: elhan.isaev

колбаскин
1

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

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

Tomich
4

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

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

vitnet
218

2171 | 930

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
1

MaxGooRoo - 13 июня 2014 11:37 - Юзер

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

Julius123
61 | 6

Julius123 - 10 июля 2014 19:35 - Юзер

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

vitnet
218

2171 | 930

vitnet - 10 июля 2014 19:52 - Эксперт

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

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

Julius123
61 | 6

Julius123 - 10 июля 2014 20:06 - Юзер

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

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

Julius123
61 | 6

Julius123 - 10 июля 2014 20:33 - Юзер

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

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

/engine/modules + ajax/feedback.php

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

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