2008-09-18 16 views
7

¿Por qué mi EXE D2009 produce correos electrónicos con archivos adjuntos llamados ATTnnnnn.DAT cuando el mismo código fuente compilado en D2007 produce correos electrónicos con archivos adjuntos correctamente nombrados con el nombre del archivo original?¿por qué mi D2009 exe produce correos electrónicos con archivos adjuntos llamados ATTnnnnn.DAT

Estoy utilizando las bibliotecas Indy respectivas que vienen con D2007 y D2009. No tener el nombre del archivo original en el archivo adjunto impide que los usuarios puedan hacer doble clic en el archivo adjunto para abrirlo (generalmente los archivos adjuntos son hojas de cálculo de Excel).

Nota: el código es idéntico; solo el compilador y las bibliotecas de Indy pueden variar. El archivo adjunto enviado por el D2009 exe se puede guardar y renombrar para decir zzzz.xls y luego se abre correctamente, es decir, el correo electrónico y los datos adjuntos se procesan correctamente, es solo el nombre del archivo adjunto que está dañado.

Alguien sugirió que los encabezados de los archivos adjuntos están corruptos. ¿Se ha roto Indy? El código para reproducir es un código estándar estándar que se puede encontrar en muchos sitios web, pero puedo publicarlo si es necesario. Thx por adelantado.

Respuesta

0

Me temo que es posible que deba rastrear hacia abajo en el código indy. Indy ha tenido una serie de errores en el pasado, así que esta podría ser la causa. Si trazas, deberías encontrarlo bastante rápido.

0

¿Se ha establecido la propiedad IdAttachment.Filename? Es posible que entre las versiones de Indy hayan cambiado la forma en que funciona Filename.

7

he encontrado el problema - por favor ver la lista de correo para adug.com.au exactas detalles de la solución, pero en resumen - la versión de Indy que viene con D2009 (versión 10.2.5) tiene 2 errores en la unidad IdMessageClient.pas en dos líneas que establecen el nombre = y el nombre de archivo = en el procesamiento de la parte de adjunto (un número de línea es 1222 de memoria y el otro unas líneas más temprano; lo siento, estoy en casa ahora; He arreglado cosas esta tarde en el trabajo). La falta de estos puntos y coma hace que el encabezado del archivo adjunto esté mal formado y Outlook genera un nombre propio para el archivo adjunto.

La solución es generar un punto y coma (;) antes de generar el nombre = o filename = tokens. Entonces Indy necesita ser reconstruido.

comparé la versión D2007 de Indy (10.1.5) y se puede ver que siempre pone el punto y coma al final de la línea Content-Type evitando así el problema que se ha colado en la versión incluida en D2009.

+0

Buen lugar. ¡Gracias por compartir eso! – robsoft

0

Las recomendaciones de Richard funcionaron para mí. Comparé las fuentes de mensajes de un archivo adjunto correcto y el de Indy. Ponga el punto y coma detrás de Content-type y Content-disposition (alrededor de la línea 1220 de hecho, y funciona. ¡Gracias Richard!

Cuestiones relacionadas