Batch extractor de archivos adjuntos

He creado un batch que me ordena los e-mails que previamente he extraído a una carpeta del disco, los ordena según la referencia que lleva el asunto y los agrupa en una carpeta que crea con esa referencia.
Funciona todo ok.
Pero quiero ir más allá, cada carpeta contiene 5 e-mails, cada uno de ellos contiene un archivo adjunto con un nombre distinto, ej: A, B, C, DE, y E.
Quiero hacer un batch que extraigo los archivos adjuntos de cada e-mail en esa misma carpeta, y vaya haciéndolo en cada carpeta con los 5 e-mails, yo le daría la carpeta de inicio y la de fin.
El caso es que todas las carpetas, tienen esos 5 e-mails con esos archivos con lo que no puedo hacer una extracción a saco en una carpeta común.
A ver si es posible.

2 Respuestas

Respuesta
1
Necesito un par de aclaraciones antes de intentar darte una solución.
En primer lugar, los e-mails que has extraído a las carpetas, ¿son en formato EML (el que crea Outlook Express) o en algún otro formato?
Según cual sea el formato supongo que la forma de guardar los archivos adjuntos variará. Por ejemplo, en el formato EML (que es al que le he echado un vistazo) los archivos adjuntos están incluidos dentro del propio archivo EML con algún tipo de codificación, por lo que no basta con extraer la parte del propio archivo sino que también habría que decodificarlo. Y esto puede ser mucho más difícil.
Para los archivos dentro de un EML se puede localizar el nombre (que figurará en una línea del tipo "Content-Disposition: attachment; filename=Resolucion.pdf" siendo Resolucion.pdf el nombre del archivo adjunto). El archivo, codificado, viene a continuación hasta otra línea del tipo: "------=_Part_2787_850564797.1251097813164--" y se podría extraer esa información, pero al estar codificado no sería el adjunto correcto.
Saludos,
GGG
No sé si estamos de suerte... los mails tienen la extensión ".msg", versión Mircrosoft Office Outlook 2003 SP3, Part of Microsoft Office Professional Edition.
<h2>Supongo que serán parecidos a los EML. Edita alguno de ellos con el "Bloc de notas" y fíjate si tiene alguna línea parecida a la que comentaba en mi anterior mensaje ("Content-Disposition: attachment; filename=Resolucion.pdf" siendo Resolucion.pdf el nombre del archivo adjunto). Si es así en la línea anterior te dirá si está codificado (algo como "Content-Transfer-Encoding:"). Si está codificado me temo que no va a servir de mucho lo que se pueda hacer con un BAT.</h2>
Saludos,
GGG
¿Dónde te puedo enviar uno de prueba comprimido en zip?
Sino esta noche te lo cuelgo en un servidor y te adjunto el enlace.
Puedes mandarlo a mi dirección de correo de terra, formada con mi usuario en este foro o usar la otra opción que sugieres.
Estoy investigando un poco en la red sobre decodificadores de archivos adjuntos por si hubiera alguna posibilidad de decodificarlos (aunque creo que, al menos, habrá que usar un programa).
Saludos,
GGG
Te lo dejo en un servidor mio, cuando lo hayas descargado coméntamelo que lo quitaré.
La url es: www.hpz.es/prueba.zip
Si usas un programa, ¿sería cómo aquel que permite enviar e-mails, es decir que el programa interactúa con el batch y no con el usuario?
Gracias...
Ya me he descargado tu archivo de prueba. Desde luego los MSG son bastante más ilegibles que los EML por lo que he podido ver.
Pero he encontrado un programita que se llama "msgDetach" que creo que serviría para tus propósitos. No he podido probarlo en serio porque exige tener instalado el Outlook (y yo no lo tengo instalado). Pero existe uno similar (del mismo "fabricante" y el mismo aspecto) que se llama "emlDetach" y me ha funcionado bien.
Obviamente es necesario, para tus propósitos, que se pueda ejecutar desde "la línea de comandos" para poder interactuar con el batch. Y efectivamente lo permite. Habría que poner algo como:
msgdetach -autorun -sortoff -inpath="c:\CarpetaMsgs\\" -outpath="c:\CarpetaAdjs\\"
El switch "-autorun" hace que se ejecute directamente, el "-sortoff" hace que no te clasifique los adjuntos en carpetas según tipo-extensión (por ejemplo, los PDF por un lado, los ZIP por otro, etc.), el "-inpath" le indica la carpeta de entrada y el "-outpath" la de salida.
La versión de prueba, gratuita, permite un máximo de 30 adjuntos de golpe. Supongo que bastará para tus necesidades. La puedes encontrar aquí:
http://bitdaddys.com/msgdetach.html
En esa misma página, un poco más abajo, te indican los comandos (con un ligero error en el ejemplo del "-autorun" porque pone "-autoron".
Si te apañas con esto podemos dejarlo aquí. Si no es así, o si tienes algún problema al incorporar este programa a tu BAT, podemos seguir "charlando".
Suerte y saludos,
GGG
Ok, gracias, el lunes en el trabajo hago una prueba a ver qué tal funciona y te comento.
Ya lo he probado, ha funcionado bien con el programa en windows y en la linea de comandos, aunque en el "PATH" de windows he tenido que añadir la carpeta donde está el programa para que se ejecute desde la linea de comandos.
Ahora ya lo tengo que añadir a mi batch y hacer un par de retoques.
Muchas gracias.
Respuesta

Si desea extraer todos sus archivos adjuntos de sus correos electrónicos, puede probar el Extractor de archivos adjuntos IMAP de Softaken. Permite que sus archivos adjuntos extraigan por lotes para un procesamiento rápido. El extractor de accesorios IMAP es 100% seguro y protegido. IMAP Attachment Extract es gratis para guardar sus archivos en la ubicación deseada. Exporta fácilmente archivos adjuntos de archivos grandes y grandes. (Excel, PDF, jpg, HTML y cualquier otro archivo). . Este software avanzado funciona fácilmente en todas las versiones más recientes de Windows, como Windows 10, 8.1, 8.7,7, XP (32 + 64 bit) y versiones anteriores.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas