отправка почты, но без идентификатора сообщения - PullRequest
3 голосов
/ 21 декабря 2010

Я получаю интересные отклонения от почтового сервера моих клиентов при отправке почты с компонентом tidMessage в indy-10, говорящим:

550 Отклонено: сообщение не содержит идентификатор сообщения

Я получаю это даже при использовании собственного демо-приложения indy

http://www.indyproject.org/DemoDownloads/Indy_10_MailClient.zip

что мне сделать, чтобы это исправить. спасибо!

Ответы [ 2 ]

6 голосов
/ 21 декабря 2010

Это работает с Indy9, возможно, вещи не слишком сильно за 10:

    procedure AddMsgID(AMsg: TIdMessage);
    var
      id: AnsiString;
    begin
      id := GenerateUniqueMsgID;
      AMsg.MsgId := id;
      AMsg.AddHeader('Message-ID=' + id);
      // AMsg.ExtraHeaders.Values['Message-ID'] := id;
    end; // AddMsgID
4 голосов
/ 21 декабря 2010

TIdMessage в Indy 10 преднамеренно пропускает заголовок «Message-Id» при кодировании электронной почты в сокет или TStream. Вам нужно будет использовать свойство TIdMessage.ExtraHeaders, например:

IdMessage1.MsgId := ...';
IdMessage.ExtraHeaders.Values['Message-Id'] := IdMessage1.MsgId;

EDIT:

В качестве продолжения этого - TIdMessage теперь обновлено с логическими изменениями в том, как он обрабатывает заголовки "Message-ID" и "In-Reply-To":

http://indyproject.org/sockets/blogs/changelog/20160912.aspx

Свойство TIdMessage.MsgId теперь генерирует заголовок «Message-ID» независимо от того, сохраняется ли электронное письмо, передается ли оно в потоковом режиме или передается. Поэтому вам больше не нужно использовать свойство ExtraHeaders.

...