2008-10-03 68 views

Trả lời

20

Bạn có thể sử dụng các mô-đun zipfile để nén các tập tin bằng cách sử dụng tiêu chuẩn zip, các email mô-đun để tạo email có tệp đính kèm và mô-đun smtplib để gửi - tất cả chỉ sử dụng thư viện chuẩn.

Python - Pin Bao gồm

Nếu bạn không cảm thấy như lập trình và thà hỏi một câu hỏi về stackoverflow.org thay vào đó, hoặc (như đề xuất trong các ý kiến) rời đi tag homework, tốt, ở đây nó là:

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

Với chức năng này, bạn chỉ có thể làm:

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

bạn đang chào đón.

+1

Đó là một câu trả lời. –

+0

Điều gì sẽ xảy ra nếu người hỏi rời khỏi thẻ bài tập về nhà? –

+0

Vì bạn gặp rắc rối khi trả lời, hãy chỉnh sửa câu trả lời của bạn để thêm cây thư mục vào mã zip, không chỉ là một tệp duy nhất. – tzot

1

Nhìn vào zipfile để nén thư mục và thư mục con của nó.

Nhìn vào smtplib cho ứng dụng email.

0

Bạn có thể sử dụng zipfile mà tàu với trăn, và here bạn có thể tìm thấy một ví dụ về cách gửi một email với file đính kèm với smtplib chuẩn

Các vấn đề liên quan