Что проблема с Message-Id в электронной почте, отправленной php

У меня есть подозрительный заголовок сообщения-сообщения электронной почты, отправленный с помощью php для учетной записи gmail:

Message-Id: <[email protected]>

Не могли бы вы рассказать, имеет ли этот странный формат и что означает SMTPIN_ADDED_MISSING? Примеры, которые я видел в Интернете, имели формат, похожий на этот, содержащий отправляющий домен, но мой идентификатор сообщения не содержит его по какой-либо причине:

[email protected]

Я не думаю, что я установил этот заголовок в Zend_Mail. Что генерирует эти заголовки? Вы видите какие-либо проблемы с этим заголовком?

Ответ 1

Правильный исходящий почтовый клиент должен генерировать заголовок Message-ID при отправке письма. Google "хорош" и генерирует его для вас, когда сообщение проходит через его почтовую систему, но большинство не будет, и большинство фильтров спама возьмут этот недостающий заголовок как признак того, что сообщение скорее всего будет спамом. Любые неверные или отсутствующие заголовки добавят к "счету спама".

Нетрудно сгенерировать, все, что требуется, это уникальное для каждого сообщения сообщение:

$message-id = time() .'-' . md5($sender . $recipient) . '@' $_SERVER['SERVER_NAME'];

или

$message-id = time() .'-' . md5($sender . $recipient) . '@yourdomain.com';

дает:

[email protected]

Ответ 2

Google SMTP генерирует его, если отсутствует. Этот заголовок должен быть установлен первым SMTP-сервером. Таким образом, вы не создаете его - google делает. Он используется для предотвращения множественной доставки и для связывания связанных сообщений.

Не нужно указывать заголовок идентификатора сообщения, но это похоже на хорошую практику для большинства (но не для всех, только настроенных) smtp для добавления (может быть, исправления) этого заголовка. Поэтому, чтобы избежать генерации этого заголовка другими, вы можете сгенерировать его самостоятельно.

Ответ 3

Я использую тот же MessageId для отслеживания обмененных сообщений.

Я исправляю MessageId с помощью

$mail->MessageID =sprintf('<%[email protected]%s>', $myMessageID, 'myserver');