当发送Indy-10的Tidmessage组件时,我的客户端邮件服务器会从我的客户端邮件服务器中获得有趣的拒绝:

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

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

http://www.indyproject.org/demodownloads/indy_10_mailclient.zip

我该怎么办来解决这个问题。谢谢!

有帮助吗?

解决方案

Indy 10中的Tidmessage在编码电子邮件到插座或Tstream时故意省略“消息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

TIdMessage.MsgId 现在,无论电子邮件是被保存,流式传输还是传输,属性现在都会生成“消息ID”标头。因此,您不需要使用 ExtraHeaders 属性了。

其他提示

它可以与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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top