envío de correo, pero ningún mensaje-id
Pregunta
Me estoy haciendo rechazos interesantes de mi servidor de correo de los clientes cuando se envía un correo electrónico con el componente tidMessage de Indy-10 diciendo:
550 Rechazado: Mensaje no contiene un identificador del mensaje
Me sale este incluso cuando se utiliza propia aplicación de demostración de Indy
http://www.indyproject.org/DemoDownloads/Indy_10_MailClient.zip
¿qué hago para solucionar este problema. gracias!
Solución
TIdMessage en Indy 10 omite intencionadamente encabezado 'Message-Id' cuando se codifica un correo electrónico a un enchufe o TStream. Usted tendrá que utilizar la propiedad TIdMessage.ExtraHeaders, por ejemplo:
IdMessage1.MsgId := ...';
IdMessage.ExtraHeaders.Values['Message-Id'] := IdMessage1.MsgId;
EDIT:
Como seguimiento de este - TIdMessage
ahora ha sido actualizada con los cambios lógicos en la forma en que maneja el "Message-ID" y encabezados "In-Reply-To":
http://indyproject.org/sockets/blogs/changelog/20160912.aspx
La propiedad TIdMessage.MsgId
ahora genera un "Message-ID" de cabecera, independientemente de si el correo electrónico se está guardando, por streaming o transmitida. Así que no es necesario utilizar la propiedad ExtraHeaders
más.
Otros consejos
Funciona con Indy9, tal vez las cosas no han cambiado demasiado en 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