发送邮件但没有邮件ID

Cru*_*ler 3 delphi indy indy10

当发送带有indy-10的tidMessage组件的邮件时,我从客户端邮件服务器得到了有趣的拒绝:

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

即使使用indy自己的演示应用程序,我也能得到它

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

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

Mic*_*las 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
Run Code Online (Sandbox Code Playgroud)


Rem*_*eau 5

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

IdMessage1.MsgId := '...';
IdMessage1.ExtraHeaders.Values['Message-Id'] := IdMessage1.MsgId;
Run Code Online (Sandbox Code Playgroud)

编辑:

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

https://www.indyproject.org/2016/09/12/logic-changes-in-tidmessage-regarding-message-id-and-in-reply-to-headers/

TIdMessage.MsgId现在,无论电子邮件是否被保存、流式传输或传输,该属性都会生成“Message-ID”标头。因此您不再需要使用该ExtraHeaders财产。