Две модели ошибок в одном интерфейсе. В C++ любая ошибка бросает исключение, и объект после неё негоден — его выбрасывают и создают заново. В C функции возвращают признак успеха, а причину отдают …GetLastError и …GetLastErrorType — у соединения, письма и получателя свои.
Следствие одно для обеих: частичного восстановления внутри объекта нет, и единица успеха — пакет подачи. Поэтому руководство и советует держать пакет не больше 5000 получателей: неудача заденет меньше адресов.
Как узнать об ошибке:
| Обвязка | Сигнал | Что с объектом |
|---|---|---|
| C++ | исключение | выбросить |
| C | возврат FALSE, затем …GetLastError | освободить …Free |
# C: текст и тип последней ошибки соединения if (!PmtaConnSubmit(conn, msg)) printf("%s %d", PmtaConnGetLastError(conn), PmtaConnGetLastErrorType(conn));
1 связь
grep -rn 'PmtaApiERROR' /opt/pmta/api/include/ | head
3 статьи
◇Как письмо попадает в MTAШесть описанных способов подачи: расширенный SMTP, четыре языковые обвязки и каталог, за которым узел следит на диске.◇Кому разрешено сдавать почту и для кого её приниматьИз коробки узел принимает подачу только с самой машины; два разных вопроса — «кто может слать через нас» и «на чьи адреса мы принимаем» — решаются разными директивами.◇Заголовки, которыми отправитель управляет доставкойШесть служебных заголовков позволяют подающей стороне выбрать поток, пометить письмо заданием, задать настройки и ключ подписи, идентификатор конверта и расписание; каждый разрешается отдельно и по источникам.