Programa Python:
Grabar este código en el script EmailExtraerAdjuntos.py, colocarlo en la carpeta donde se encuentran todos los correos de extensión eml y ejecutarlo mediante la siguiente sentencia:
python3 EmailExtraerAdjuntos.py
En la subcarpeta Adjuntos se encontrarán todos los adjuntos Docx, Xlsx, Pdf entre otros. Separar los archivos Docx y Xlsx en subcarpetas y ejecutar la siguiente sentencia para convertirlos a formato PDF.
libreoffice --headless --convert-to pdf *.docx
libreoffice --headless --convert-to pdf *.xlsx
Programa Python EmailExtraerAdjuntos.py:
import os
import email
import shutil
def extract_attachments(eml_file, output_folder):
with open(eml_file, 'rb') as f:
msg = email.message_from_binary_file(f)
for part in msg.walk():
if part.get_content_maintype() == 'multipart':
continue
if part.get('Content-Disposition') is None:
continue
filename = part.get_filename()
if filename:
filepath = os.path.join(output_folder, filename)
# Check if file with same name already exists
if os.path.exists(filepath):
base, ext = os.path.splitext(filename)
count = 1
while True:
new_filename = f"{base}_{count:02d}{ext}"
new_filepath = os.path.join(output_folder, new_filename)
if not os.path.exists(new_filepath):
break
count += 1
filepath = new_filepath
with open(filepath, 'wb') as attachment:
attachment.write(part.get_payload(decode=True))
print(f"Extracted: {filename} (saved as {os.path.basename(filepath)})")
def main():
eml_folder = "path/to/eml/folder"
output_folder = os.path.join(eml_folder, "Adjuntos")
if not os.path.exists(output_folder):
os.makedirs(output_folder)
for filename in os.listdir(eml_folder):
if filename.endswith(".eml"):
eml_file = os.path.join(eml_folder, filename)
extract_attachments(eml_file, output_folder)
if __name__ == "__main__":
main()
Comentarios
Publicar un comentario