Есть ли способ декодировать электронные письма в формате html?

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

Глядя на аутлуки "HTML" хочется заползти в позу эмбриона и заплакать!

Есть ли класс php для расшифровки электронных писем HTML для поддержки базового HTML? Я не хочу отображать электронные письма в рамке, потому что я хочу работать с данными и анализировать их. Я также не хочу поддерживать глупые вещи, такие как изменение шрифта, поскольку это веб-приложение. Я хочу, чтобы мое веб-приложение говорило, что это за шрифт, и не было какого-то хиппи, который отправляет в службу поддержки электронные письма с комическим шрифтом и желтым цветом. Я хочу поддерживать выделение полужирным шрифтом, курсивом, подчеркиванием, растянутостью и списками (http://dl.getdropbox.com/u/5910/Jing/2009-02-23_2100.png).

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

Также я должен добавить, что использую Zend Framework из-за потрясающего Zend_Mail.


person Thomaschaaf    schedule 23.02.2009    source источник


Ответы (5)


Вы можете передать его через htmltidy, а затем дополнительно отфильтровать его с помощью чего-то вроде HtmlPurifier, но, конечно, вы можете убрать что-то важное для понимания содержимого. Это проблема визуального формата, такого как html.

person troelskn    schedule 23.02.2009

Вы можете использовать функцию PHP strip_tags() и ее необязательный параметр "allowable_tags". Это позволит вам удалить все теги, которые не являются <em> <b> <strong> <u> и т. д.

Что касается RTF и HTML, насколько я понимаю, когда Outlook и Exchange взаимодействуют с системами, несовместимыми с RTF, они преобразуют RTF в HTML. Я не уверен, что это всегда верно, или насколько последовательна эта функция, но это может объяснить, почему сообщения, отправленные в формате RTF, выглядят как HTML.

person acrosman    schedule 23.02.2009
comment
Не так много для моих списков :( dl.getdropbox.com/ u/5910/Jing/2009-02-23_2100.png Внешний вид FU! (извините) - person Thomaschaaf; 23.02.2009
comment
strip_tags не подходит, если вы не доверяете пользователю (что здесь может быть, а может и не быть). Вместо этого используйте HtmlPurifier. - person troelskn; 23.02.2009
comment
HTMLPurifier выглядит восхитительно! Просто нужно заставить его работать с Zend Framework :) - person Thomaschaaf; 23.02.2009
comment
@Thomaschaaf, это очень уродливо. Если вы беспокоитесь только о ul, вы можете сначала заменить их все, поскольку код, по крайней мере, непротиворечив, ol, вероятно, также уродлив, но последователен, но вы, вероятно, вернулись к написанию своей собственной библиотеки. - person acrosman; 23.02.2009

Я почти уверен, что вам придется написать свой собственный класс... в документах PHP, которые я видел, нет настоящего класса.

person Earlz    schedule 23.02.2009
comment
Я думал о курсе, который кто-то написал, так как мне нужно было посмотреть, какие дерьмовые вещи делают все крупные парни.. Outlook, Apple Mail, Windows Live Mail, gmx, gmail .... - person Thomaschaaf; 23.02.2009

Или вы можете использовать обычный текстовый вариант, прикрепленный к электронному письму. Если нет варианта с открытым текстом, вы можете использовать урезанную версию html. Я думаю, что с помощью этих шагов вы получите хороший результат:

  1. Удалить новые строки
  2. Превратите </p> и <br/> в новую строку
  3. Удалите все теги html
person Bouke    schedule 23.02.2009
comment
не дал бы мне возможности использовать полужирный шрифт, курсив, подчеркнутый, растянутый и списки. - person Thomaschaaf; 23.02.2009

Извлечение HTML из почты Outlook поначалу может показаться пугающим, но это всего лишь HTML-теги — их очень много!

Поэтому, если вы просто найдете «‹», а затем найдете следующий «>», у вас есть тег. Если это не то, что вы хотите иметь, например, «‹/strong›», просто выбросьте его и повторите Simple as this.

(Я сделал именно это в средстве проверки орфографии и грамматики, которое не только извлекает простой текст из Outlook и проверяет его, но и может затем отправить все пользовательские изменения обратно в HTML, не уничтожая никаких тегов. Последнее было не< /em> легко! ;-)

person Dan Byström    schedule 23.02.2009