2008-10-03 7 views

Antwort

20

Sie können die Datei mit dem ZIP-Standard zu komprimieren zipfile Modul finden verwenden, die email Modul zum Erstellen der E-Mail mit dem Anhang, und das smtplib Modul, um es zu senden - alle nur mit der Standard-Bibliothek. Python

- Batterien

inklusive Wenn Sie nicht wie die Programmierung fühlen und würden eher eine Frage auf stackoverflow.org fragen stattdessen oder (wie in den Kommentaren vorgeschlagen) aufhörte den homework Tag, na ja, es hier ist:

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() 

Mit dieser Funktion können Sie einfach tun:

send_file_zipped('result.txt', ['[email protected]']) 

Sie sind willkommen.

+1

Das ist eine höllische Antwort. –

+0

Was ist, wenn der Fragesteller das Hausaufgaben-Tag weggelassen hat? –

+0

Da Sie sich die Mühe gemacht haben, zu antworten, bearbeiten Sie Ihre Antwort, um einen Verzeichnisbaum in der Zip hinzuzufügen, nicht nur eine einzelne Datei. – tzot

1

Betrachten Sie zipfile zum Komprimieren eines Ordners und seiner Unterordner.

Betrachten Sie smtplib für einen E-Mail-Client.

0

können Sie verwenden zipfile, die ausgeliefert wird mit Python und here Sie ein Beispiel für das Senden einer E-Mail mit Anhängen mit dem Standard smtplib

Verwandte Themen