Senden von Nachrichten, aber keine Message-ID
Frage
Ich bin immer interessant Ablehnungen von meinen Kunden Mail-Server, wenn eine Mail mit indy-10 tidMessage Komponente Senden sagen:
550 Abgelehnt: Nachricht keine Message-ID enthalten
Ich erhalte diese auch bei indy eigener Demo-Anwendung mit
http://www.indyproject.org/DemoDownloads/Indy_10_MailClient.zip
Was muss ich tun, dies zu beheben. Dank!
Lösung
TIdMessage in Indy 10 lässt absichtlich die 'Message-Id' Header bei der Kodierung eine E-Mail an eine Steckdose oder TStream. Sie werden die TIdMessage.ExtraHeaders Eigenschaft verwenden müssen, zum Beispiel:
IdMessage1.MsgId := ...';
IdMessage.ExtraHeaders.Values['Message-Id'] := IdMessage1.MsgId;
EDIT:
Als Followup für diesen - TIdMessage
wird nun mit der Logik Änderungen aktualisiert, wie es behandelt die "Message-ID" und "In-Reply-To" Header:
http://indyproject.org/sockets/blogs/changelog/20160912.aspx
Die TIdMessage.MsgId
Eigenschaft erzeugt nun einen „Message-ID“ Header unabhängig davon, ob die E-Mail gespeichert wird, gestreamt oder übertragen werden. Sie müssen also nicht mehr die ExtraHeaders
Eigenschaft verwendet wird.
Andere Tipps
Es funktioniert mit Indy9, vielleicht haben sich die Dinge nicht zu sehr verändert in 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