PHP, отображающий html-адрес электронной почты на странице html

Я создаю скрипт почтового ящика PHP по электронной почте.

Как я могу сделать html-сообщения электронной почты чистыми, как в gmail / hotmail.

Если я просто повторяю это, это влияет на весь макет страницы.

Я мог бы использовать iframes, но, безусловно, это не лучшее решение.

Как заявил Marc B, я считаю, что IFrame будет вашим лучшим выбором … но, пожалуйста, поймите, что если вы просто сбросите любой HTML-код электронной почты, вы рискуете подвергнуть себя вирусам, троянам и вредоносному коду HTML / JavaScript. ваш компьютер, если вы не найдете хороший способ для песочницы / полоски этого HTML.

Вот простое Regex для очистки JavaScript по крайней мере:

"(?s)<script.*?(/>|</script>)" 

Если вы ищете «лучшее решение», получите на борту новую библиотеку электронной почты с открытым исходным кодом, которая делает то же самое, что и вы. Поддержание рендеринга электронной почты по своему усмотрению, который безопасен для инъекций скриптов и других хаков, будет просто слишком большой работой для одного человека.

Один пример: https://github.com/afterlogic/webmail-lite

Другой: http://trac.roundcube.net/

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

Рассмотрим использование некоторой библиотеки HTML Tidy (то есть: PHP.Tidy ).

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

Хорошей практикой было бы определить стандартное поведение CSS для большинства тегов в используемом вами div.

Создайте контейнер DIV, которому вы назначаете ширину (и высоту, если необходимо), и убедитесь, что вы добавили свойство переполнения в соответствии с вашим дизайном. Это должно помешать вашей электронной почте HTML помешать вашему макету.

ОБНОВИТЬ

Контейнер DIV по-прежнему гарантирует, что вы можете ограничить размер окна дисплея и с помощью соответствующих действий CSS, аналогичных iframe без всего багажа.

Если вы беспокоитесь о коде в письме, strip_tags выглядит лучше, чем регулярное выражение. Вы можете определить список тегов, чтобы оставить их в покое и по-прежнему быть уверенными в том, что оставите все остальное.