发送邮件但没有邮件ID

时间:2010-12-21 06:38:07

标签: delphi indy indy10

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

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

即使使用indy自己的演示应用程序

,我也能得到这个

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

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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

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