2008-10-03 34 views

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

Esa es una gran respuesta. –

+0

¿Qué pasa si el interrogador dejó la etiqueta de tarea? –

+0

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

1

Mire zipfile para comprimir una carpeta y sus subcarpetas.

Mire smtplib para un cliente de correo electrónico.

0

Puede utilizar zipfile que se incluye con pitón, y here se puede encontrar un ejemplo de envío de un correo electrónico con archivos adjuntos con el smtplib estándar

Cuestiones relacionadas