Hola
Cita:
Empezado por Fizban
Aquí intento grabar la parte del mensaje de Texto a un TStream pero me da un error de violación de acceso a memoria.
Código Delphi [-]
TidTExt(RecMensaje.MessageParts.Items[intindex]).Body.SaveToStream(TIdMessageCoder.SourceStream);
TIdMessage.LoadFromStream(TIdMessageCoderSourceStream);
Y ahí es dónde tengo el problema.
|
Si el adjunto es un mensaje, en primer lugar, el MessagePart no será de la clase TidText, sino de la clase TidAttachment, que es el molde que debieras aplicar. De hacer este casteo no seguro, es muy probable que provenga el Access Violation que obtenes. En otra ocasión, te recomiendo comprobar primero la clase de un objeto, o bien realizar un casteo seguro, con el operador AS, para evitar este tipo de errores.
Ahora si he tenido delphi a mano, asi que he comprobado que el mime/type de los adjuntos que son otro mensaje es message/rfc822.
He comprobado también que esta clase (TidAttachment) no tiene método SaveToStream, pero si un método SaveToFile, con el que seguramente usando un archivo temporal o intermedio solucionarás el asunto.
Te recomiendo darte una vuelta por la ayuda de TidAttachment, y poner atención en sus propiedades: FileName, ContentType y ContentTransfer.
Hasta luego.
pd. He editado tu mensaje, que has puesto un tipo de letra demasiado grande. Si vuelve a ocurrite, se agradece que vos mismo lo edites.