Как я могу сжать папку и отправить сжатый файл по электронной почте в Python? - PullRequest
7 голосов
/ 04 октября 2008

Я хочу сжать папку и все ее подпапки / файлы и отправить почтовый файл в виде вложения. Каков наилучший способ достичь этого с Python?

Ответы [ 3 ]

19 голосов
/ 04 октября 2008

Вы можете использовать модуль zipfile для сжатия файла с использованием стандарта zip, модуль email для создания электронной почты с вложением и smtplib модуль для его отправки - все используют только стандартную библиотеку.

Python - батареи включены

Если вам не нравится программирование, и вы вместо этого зададите вопрос на stackoverflow.org или (как предложено в комментариях) убрали тег homework, ну, вот оно:

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='you@you.com'):
    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()

С помощью этой функции вы можете просто:

send_file_zipped('result.txt', ['me@me.org'])

Пожалуйста.

1 голос
/ 04 октября 2008

Посмотрите на zipfile для сжатия папки и ее подпапок.

Посмотрите на smtplib для почтового клиента.

0 голосов
/ 04 октября 2008

Вы можете использовать zipfile , который поставляется с python, а здесь вы можете найти пример отправки электронного письма с вложениями со стандартным smtplib

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...