Me gustaría comprimir una carpeta y todas sus subcarpetas/archivos, y enviar el archivo zip como un archivo adjunto. ¿Cuál sería la mejor manera de lograr esto con Python?¿Cómo puedo comprimir una carpeta y enviar por correo electrónico el archivo comprimido en Python?
Q
¿Cómo puedo comprimir una carpeta y enviar por correo electrónico el archivo comprimido en Python?
7
A
Respuesta
20
Usted puede utilizar el módulo zipfile para comprimir el archivo utilizando el estándar de código postal, el email módulo para crear el correo electrónico con el archivo adjunto y el módulo smtplib para enviarlo; todo esto solo con la biblioteca estándar.
Python - pilas incluidas
Si usted no se siente como la programación y prefiere hacer una pregunta sobre stackoverflow.org lugar, o (como se sugiere en los comentarios) a la izquierda de la etiqueta homework
, así, aquí es:
import smtplib
import zipfile
import tempfile
from email import encoders
from email.message import Message
from email.mime.base import MIMEBase
from email.mime.multipart import MIMEMultipart
def send_file_zipped(the_file, recipients, sender='[email protected]'):
zf = tempfile.TemporaryFile(prefix='mail', suffix='.zip')
zip = zipfile.ZipFile(zf, 'w')
zip.write(the_file)
zip.close()
zf.seek(0)
# Create the message
themsg = MIMEMultipart()
themsg['Subject'] = 'File %s' % the_file
themsg['To'] = ', '.join(recipients)
themsg['From'] = sender
themsg.preamble = 'I am not using a MIME-aware mail reader.\n'
msg = MIMEBase('application', 'zip')
msg.set_payload(zf.read())
encoders.encode_base64(msg)
msg.add_header('Content-Disposition', 'attachment',
filename=the_file + '.zip')
themsg.attach(msg)
themsg = themsg.as_string()
# send the message
smtp = smtplib.SMTP()
smtp.connect()
smtp.sendmail(sender, recipients, themsg)
smtp.close()
Con esta función, sólo se puede hacer:
send_file_zipped('result.txt', ['[email protected]'])
de qué.
1
0
Cuestiones relacionadas
- 1. Enviar una tabla en el correo electrónico
- 2. cómo enviar correo electrónico HTML
- 3. Cómo comprimir un directorio en un archivo comprimido programáticamente
- 4. ¿Cómo enviar archivos adjuntos de correo electrónico?
- 5. MVC HTML5 enviar por correo electrónico
- 6. vb.net enviar correo electrónico
- 7. Enviar correo electrónico - Cocoa
- 8. Enviar notificación por correo electrónico de Jenkins
- 9. enviar correo electrónico con el archivo adjunto en PDF
- 10. ¿Cómo puedo enviar una notificación diaria por correo electrónico a los usuarios en PHP?
- 11. phing: ¿enviar el registro completo por correo electrónico?
- 12. ¿Cómo puedo enviar el contenido del archivo como correo electrónico en Perl?
- 13. Enviar correo electrónico desde Cocoa
- 14. comprimir una carpeta/archivo usando qt
- 15. Comprimir una carpeta
- 16. Node.js - Enviar correo electrónico en el registro
- 17. iphone app enviar correo electrónico
- 18. enviar correo electrónico asp.net C#
- 19. ¿Enviar correo electrónico de Elmah?
- 20. C# Enviar correo electrónico masivo
- 21. ¿Cómo enviar el archivo pdf generado como archivo adjunto en el correo electrónico desde C#?
- 22. ¿Cómo puedo hacer que el correo electrónico vaya a una carpeta local durante la prueba?
- 23. ¿Cómo puedo enviar/recibir (SMTP/POP3) correo electrónico usando R?
- 24. Python - ¿Cómo enviar un correo electrónico a utf-8?
- 25. KRL: ¿puedo enviar un correo electrónico con el correo electrónico: forward()?
- 26. enviar correo electrónico con archivo adjunto en php sin guardar el archivo en el servidor web
- 27. enviar correo electrónico desde localhost
- 28. Enviar correo electrónico con archivo adjunto mediante aplicación de correo electrónico del cliente
- 29. Al procesar una respuesta por correo electrónico, ¿cómo puedo ignorar las especificaciones del cliente de correo electrónico y el historial?
- 30. ¿Cómo enviar por correo electrónico un archivo Django FileField como un archivo adjunto?
Esa es una gran respuesta. –
¿Qué pasa si el interrogador dejó la etiqueta de tarea? –
Como se ha tomado la molestia de responder, edite su respuesta para agregar un árbol de directorio en el archivo zip, no solo un archivo. – tzot