mailmerge-expands-undefined-variables

Global

Что подставлять вместо переменной слияния без значения
в конфигурации это строкаmailmerge-expands-undefined-variables trueвнутри блока Global
Пустое место или видимая скобка

Умолчание — true: переменная слияния, для которой значения не передали, раскрывается в пустую строку. Письмо уходит с дыркой на её месте.

Со значением false вставка вроде [foo] остаётся в письме как есть — со скобками и именем переменной.

Выбор между двумя способами показать ошибку: тихим и громким. Тихий пропускает письмо с пропущенным именем клиента; громкий выдаёт получателю квадратные скобки.

Главная ловушка — умолчание прячет ошибку. Пустая строка на месте имени выглядит опечаткой вёрстки: «Здравствуйте, !». Заметят её получатели, а не вы, и не сразу.

Значение false громче, но не лучше: скобки в письме читаются как техническая неисправность, и на репутацию отправителя это влияет хуже, чем пропуск.

Правильный выход — третий, и он не в этой строке: проверять полноту данных на подающей стороне. Обе настройки лишь выбирают, как выглядеть ошибке, которая уже произошла.

Что делает Хаб. Не пишет — остаётся вендорское true. Слияние в подаче Хаба не задействовано вовсе: письма собираются на его стороне и уходят готовыми.

Переменных получателя в письмах Хаба нет, так что и пропускать нечего: в шаблоне прогрева раскрывается только спинтакс {а|б}, а незакрытые скобки проверяются ещё при сохранении письма.

Рекомендуемые значения

Что ставить. Обе настройки плохи, и выбирают из двух зол:

Значение Когда
true (умолчание) письмо читает человек, и пропуск заметен меньше, чем скобки
false письма проверяются глазами перед рассылкой, и скобка нужна как сигнал

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

Умолчание true и поведение обоих значений — из руководства, § 3.3.1.39. Оценка «обе настройки лишь выбирают вид ошибки» наша.
Пример в конфигурации
# на испытательной рассылке скобка — находка, а не позор
mailmerge-expands-undefined-variables false
С этим значением вставка вроде [foo] останется в письме целиком. На боевой рассылке это хуже пропуска: скобки читаются как неисправность.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

Типичные ошибки и проблемы

что делают не так и чем это кончается2 ошибки▶

Выбирают между двумя настройками вместо проверки данных

наш опыт

Чем чреватоОбе лишь выбирают, как выглядеть уже случившейся ошибке. Письмо с недостающими данными уходит в любом случае — с дыркой или со скобкой.
Как заметитьВ рассылках регулярно встречаются пропущенные имена или видимые скобки.
Как правильноПроверять полноту данных на подающей стороне, до отправки.

Ставят видимую скобку на боевой рассылке

§ 3.3.1.39

Чем чреватоСкобки в письме читаются получателем как техническая неисправность. Это заметнее пропуска и хуже для отношения к отправителю.
Как заметитьПолучатели видят в письмах квадратные скобки с именами переменных.
Как правильноДержать false только на испытательных рассылках.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Справочные данные
Синтаксис
mailmerge-expands-undefined-variables <boolean>
Значения
yes | no | true | false
Умолчание
true § 3.3.1.39
Применение
reload, перезапуск не нужен
Очередь
уже поставленное в очередь не затронет
Где писать
Global
Сколько раз
один раз в блоке
Всё здесь — из руководства, с разделом.
Наследование
Директива пишется в корне файла конфигурации и действует на весь узел: правило одно для всего слияния. Развести его по источникам или получателям нельзя.
Как проверить на узле
Строку видно в конфигурации; проверять надо письмом:
grep -n 'mailmerge-expands-undefined-variables\|allow-mailmerge' /etc/pmta/config /etc/pmta/virtualhost.txt
Если слияние не разрешено ни одному источнику, строка не проявится никак. Проверять поведение надо письмом с заведомо недостающей переменной.
В Хабе
Цена ошибки
обратимо: вредит, пока стоит
Сценарии
Подключить платформу отправки