質問
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
所属していません StackOverflow