3

在发送带有 indy-10 的 tidMessage 组件的邮件时,我收到了来自客户邮件服务器的有趣拒绝:

550 被拒绝:消息不包含消息 ID

即使使用 indy 自己的演示应用程序我也会得到这个

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

我该怎么做才能解决这个问题。谢谢!

4

2 回答 2

6

它适用于 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
于 2010-12-21T06:56:51.917 回答
4

Indy 10 中的 TIdMessage 在将电子邮件编码到套接字或 TStream 时有意省略了“Message-Id”标头。您将不得不使用 TIdMessage.ExtraHeaders 属性,例如:

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

编辑:

作为对此的后续 -TIdMessage现在已经更新了它如何处理“Message-ID”和“In-Reply-To”标头的逻辑更改:

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

The TIdMessage.MsgId property now generates a "Message-ID" header regardless of whether the email is being saved, streamed, or transmitted. So you do not need to use the ExtraHeaders property anymore.

于 2010-12-21T10:09:09.873 回答