Обвязка подачи на C++

C++ Submission API
Третья из пяти

Обвязка подачи на C++ — третья из пяти в главе. Её 19 методов — тот же набор возможностей, что у обвязки C, только без функций выделения, освобождения и запроса ошибки.

Три класса в трёх заголовках: submitter/Connection.hxx, submitter/Message.hxx и submitter/Recipient.hxx; на Linux они лежат в /opt/pmta/api/include.

Ошибка — исключение, после которого объект негоден и его выбрасывают. Подключение умеет вход с логином и паролем — механизмом CRAM-MD5, так что пароль по сети не передаётся.

Главная ловушка — продолжать с объектом после ошибки. Любое исключение делает объект негодным: повтор на нём бессмыслен, объект создают заново, а письмо подают заново.
Что делает Хаб. Не используется: Хаб подаёт письма по SMTP. Методы этой обвязки полезны как перечень того, что подающая сторона может решать за письмо.
Рекомендуемые значения

Главные методы:

Метод Что задаёт
Connection::Connection сервер, порт, по желанию логин и пароль
Message::setVirtualMta адрес отправки для письма
Message::setJobId задание
Message::setEncoding кодировку добавляемых данных
Message::setReturnType что вкладывать в отчёт о недоставке
Connection::submit подать письмо
Заголовки, модель ошибок и методы — из руководства (§ 7.4). Выбор методов для таблицы — наш.
Пример в конфигурации
# письмо через обвязку C++: соединение, отправитель, адрес отправки
Connection conn("127.0.0.1", 25);
Message msg("sender@example.com");
msg.setVirtualMta("vmta1");conn.submit(msg);
Набросок по описаниям методов руководства; получателей добавляют addRecipient, содержимое — addData.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Как проверить на узле
Проверить, что заголовки обвязки на месте:
ls /opt/pmta/api/include/submitter/
Файлы Connection.hxx, Message.hxx и Recipient.hxx — обвязка C++ установлена.
В Хабе
Цена ошибки
безопасно: неверное значение ничего не ломает
Сценарии
Подключить платформу отправки