質問

Indy-10のTIDMESSAGEコンポーネントとメールを送信すると、クライアントのメールサーバーから興味深い拒否が得られています。

550拒否:メッセージにはメッセージIDが含まれていません

Indy独自のデモアプリを使用してもこれを手に入れます

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

これを修正するために私は何をしますか。ありがとう!

役に立ちましたか?

解決

Indy 10のTidmessageは、ソケットまたはTストリームに電子メールをエンコードするときに、「メッセージID」ヘッダーを意図的に省略します。 Tidmessage.extraheadersプロパティを使用する必要があります。

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

編集:

これのフォローアップとして - TIdMessage 現在、「メッセージ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