正在发送邮件,但没有消息ID

dz6r00yl  于 2022-09-21  发布在  其他
关注(0)|答案(2)|浏览(182)

当我用Indy-10的tidMessage组件发送邮件时,我的客户邮件服务器收到了有趣的拒绝,邮件内容如下:

550已拒绝:邮件不包含邮件ID

我甚至在使用Indy自己的演示应用程序时也会得到这个

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

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

8gsdolmq

8gsdolmq1#

这对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
e4yzc0pl

e4yzc0pl2#

在将电子邮件编码为套接字或TStream时,Indy 10中的TIdMessage会故意省略‘Message-ID’标头。您必须使用TIdMessage.ExtraHeaders属性,例如:

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

编辑:

接下来,-TIdMessage在处理“Message-ID”和“In-Reply-To”标头的方式上进行了逻辑更改:

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

TIdMessage.MsgId属性现在生成一个“Message-ID”头,而不管电子邮件是被保存、流传输还是被传输。因此,您不再需要使用ExtraHeaders属性。

相关问题