mail di invio ma nessun messaggio-id
Domanda
sto ottenendo rifiuti interessanti dal mio server client di posta quando si invia una e-mail con il componente tidMessage indy-10 di dire:
550 Rifiutato: messaggio non contiene un Message-ID
ottengo questo anche quando si utilizza il proprio demo app di indy
http://www.indyproject.org/DemoDownloads/Indy_10_MailClient.zip
Che cosa devo fare per risolvere questo problema. grazie!
Soluzione
TIdMessage in Indy 10 omette intenzionalmente intestazione 'Message-Id' durante la codifica una mail a una presa o TStream. Si dovrà utilizzare la proprietà TIdMessage.ExtraHeaders, ad esempio:
IdMessage1.MsgId := ...';
IdMessage.ExtraHeaders.Values['Message-Id'] := IdMessage1.MsgId;
Modifica
Come un follow-up per questo - TIdMessage
ora è stato aggiornato con i cambiamenti di logica nel modo in cui gestisce il "Message-ID" e intestazioni "In-Reply-To":
http://indyproject.org/sockets/blogs/changelog/20160912.aspx
La proprietà TIdMessage.MsgId
ora genera un'intestazione "Message-ID" indipendentemente dal fatto che l'e-mail viene salvato, in streaming, o trasmessi. Quindi non c'è bisogno di usare più la proprietà ExtraHeaders
.
Altri suggerimenti
Funziona con Indy9, forse le cose non sono cambiate troppo 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