Генерация текстовых версий писем из HTML с помощью lynx

в 8:17, , рубрики: html, Lynx, Блог компании Pechkin-mail.ru, метки: ,

Генерация текстовых версий писем из HTML с помощью lynx

Введение

Email-рассылки, отправляемые через Печкин, в большинстве своем содержат как html-версию письма, так и plain-text версию. Отправить рассылку без HTML-версии можно, а вот, отправив ее без plain-text, вы рискуете лишиться ряда подписчиков, почтовые клиенты которых без сожаления вырезают html-версии писем в целях безопасности. Особенно этим отличаются корпоративные аккаунты, почтовые администраторы которых заботятся о защите своих подопечных от спама и вирусов.

Ставим задачу

Итак, plain-text версия письма необходима, это факт. Но как же сложно заставить себя написать ее, если вы только что потратили кучу времени на создание html-версии своей рассылки. Очевидно, что Печкин должен снимать эту нагрузку и автоматически генерировать текстовую версию писем для наших клиентов. Но как это сделать?

Мы перепробовали многое:

  • разнообразные регулярные выражения
  • кучу разных библиотек для парсинга html

Все было криво и невпопад, класс для генерации увеличивался на глазах, а косяки шли за косяками. А ведь нам требовалось просто и красивое решение, которое позволяло бы:

  • выделять заголовки и подзаголовки
  • выделять и аккуратно отображать ссылки
  • следить за количеством переносов и аккуратно распологать блоки с текстом для их читаемости
  • делать все это быстро

Решение на lynx

И тут, неожиданно для нас, всплыло решение с помощью технологии из 90-х годов прошлого века, появившейся на заре возникнования интернета. Текстовый браузер! Ну, конечно, скармливаем ему наш html-код и на выходе получаем его превосходно отображаемую текстовую версию, со всеми ссылками, заголовками итд. За базу был взят Lynx, работает он быстро, да и один из наших разработчиков использовал его ранее для своих SEO-целей.

Пришлось немного поднастроить его для восприятия русского языка в наших рассылках. Настройки в lynx.cfg на Debian (кодировка всех рассылок на Печкине — UTF-8):

LOCALE_CHARSET:FALSE
ASSUME_CHARSET:utf-8
CHARACTER_SET:utf-8

MAKE_PSEUDO_ALTS_FOR_INLINES:FALSE

И, вуаля, с помощью простой команды:

lynx -dump

получаем красивую текстовую версию письма.

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

Данный автоматический конвертер доступен в Печкин.Лаборатории для всех подряд, даже если у вас нет аккаунта на Печкине.

Ссылка на демонстрацию работы: labs.pechkin-mail.ru/html2text/

Автор: dsosnin

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js