l'envoi de courrier, mais pas de message-id
Question
Je reçois des rejets de mes clients intéressants serveur de messagerie lors de l'envoi d'un mail avec le composant tidMessage de indy-10 en disant:
550 Refusé: Le message ne contient pas un ID de message
Je reçois ce même lors de l'utilisation propre application de démonstration de indy
http://www.indyproject.org/DemoDownloads/Indy_10_MailClient.zip
ce que dois-je faire pour résoudre ce problème. merci!
La solution
TIdMessage dans Indy 10 omet volontairement la tête « Message-Id » lors du codage d'un e-mail à une prise de courant ou TStream. Vous devrez utiliser la propriété TIdMessage.ExtraHeaders, par exemple:
IdMessage1.MsgId := ...';
IdMessage.ExtraHeaders.Values['Message-Id'] := IdMessage1.MsgId;
EDIT:
En tant que suivi de cette - TIdMessage
a été mis à jour avec les changements logiques dans la façon dont il gère les en-têtes "Message-ID" et "In-Reply-To":
http://indyproject.org/sockets/blogs/changelog/20160912.aspx
La propriété TIdMessage.MsgId
génère maintenant un en-tête « Message-ID » indépendamment du fait que le courriel est en cours d'enregistrement, transmis en continu ou transmis. Donc, vous ne devez plus utiliser la propriété ExtraHeaders
.
Autres conseils
Il fonctionne avec Indy9, peut-être les choses ont pas changé trop 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