Единственная возможность, которую руководство прямо называет преимуществом обвязок над обычным SMTP.
Как устроено. У каждого получателя свой набор именованных переменных. Тело письма добавляется двумя разными действиями: как дословные данные или как данные слияния — и во втором случае переменные подставляются при доставке, MTA, а не подающей системой.
Зачем разделять два вида данных. В одном письме уживается то, что трогать нельзя, и то, что персонализируется: подпись, ссылка отписки и юридический текст добавляются дословно, а обращение и содержимое — слиянием.
Экономия настоящая. Одно поданное письмо обслуживает многих получателей: тело передаётся узлу один раз, а разворачивается по числу адресов уже на нём. Именно поэтому руководство и говорит, что обвязки быстрее обычного соединения только в этом случае.
Переносы строк внутри переменной пишутся управляющими последовательностями. Руководство различает настоящий перенос и дословную обратную косую в примерах — и это не педантизм: ошибка даёт либо поехавшую вёрстку, либо видимые получателю служебные символы.
Нумерованные части существуют для многочастных слияний: первая подразумевается, каждый номер используется один раз.
Персонализацию у нас делает площадка до подачи: письмо приходит на узел уже собранным. Это осознанно — так содержимое видно в предпросмотре и в журнале до отправки, а не появляется на последнем шаге внутри MTA.
Слияние стало бы интересным, если бы Хаб сам рассылал большие кампании: тогда одна передача вместо тысячи заметно снизила бы трафик к узлу. Пока подачей занимаются площадки, выигрыша нет.
Что чем добавлять:
| Часть письма | Каким действием | Почему |
|---|---|---|
| обращение, содержимое под получателя | данными слияния | ради этого механизм и существует |
| юридический текст, подпись | дословными данными | не должно меняться ни у кого |
| ссылка отписки | дословными | и тем более если в ней есть спецсимволы |
| вёрстка от стороннего редактора | дословными | в ней может встретиться похожее на переменную |
Переносы строк проверять на живом письме. Управляющая последовательность и дословная обратная косая различаются одним символом, а результат — либо перенос, либо видимые получателю знаки. Проверяется это только отправкой себе.
Слияние надо ещё и разрешить в блоке подачи (allow-mailmerge): без этого подающая система его не применит.
# у получателя свои переменные, письмо собирается одно # rcpt.defineVariable("name", "Мария") # msg.addMergeData("Здравствуйте, [name]!") # msg.addData("С уважением, отдел продаж")# первая строка тела подставится, вторая уйдёт как есть
что делают не так и чем это кончается3 ошибки▶
§ 7.4.19
§ 7.4.19
§ 3.3.7
3 связи
allow-mailmerge<source>Разрешение на узле: без него подающая система слияние не применит. § 7.1Занятые имена переменных слиянияИмена, занятые MTA: свои переменные так называть нельзя. § 11.19.4.2Нумерованные части слиянияНумерованные части того же механизма — для многочастных слияний. § 11.19.4.3
mailmerge-expands-undefined-variablesGlobalПравило касается только писем, собираемых слиянием; для обычных подстановок нет. § 3.3.1.39Кодировки при подачеСмежный механизм: они работают вместе. § 7.4.14Подача по HTTPS на своём приёмнике, по образцу SparkPostТело письма собирается подстановками по тому же образцу. § 8.1Подача письма по HTTPМеханизм, который здесь и виден. § 8.1.4Шесть способов выбрать поток и порядок между нимиСлияние решает, действует выбор на всё задание разом или на каждого получателя отдельно. § 9.4Переменная слияния — верхняя ступень, и живёт она в содержимомСуществует только там, где слияние включено, и по той же причине действует на каждого получателя отдельно. § 9.4
grep -n 'allow-mailmerge' /etc/pmta/config pmta show jobs
3 статьи
◇Слияние через расширения SMTPСлияние по SMTP: XMRG вместо MAIL FROM, XDFN с переменными перед каждым получателем и XPRT вместо DATA для каждой части.◇Как письмо попадает в MTAШесть описанных способов подачи: расширенный SMTP, четыре языковые обвязки и каталог, за которым узел следит на диске.◇Кому разрешено сдавать почту и для кого её приниматьИз коробки узел принимает подачу только с самой машины; два разных вопроса — «кто может слать через нас» и «на чьи адреса мы принимаем» — решаются разными директивами.