Ich möchte einen Ordner und alle seine Unterordner/Dateien komprimieren und die ZIP-Datei als Anhang per E-Mail versenden. Was wäre der beste Weg, dies mit Python zu erreichen?Wie kann ich einen Ordner komprimieren und die komprimierte Datei in Python per E-Mail versenden?
7
A
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
0
Verwandte Themen
- 1. Wie kann ich ein Diagramm per Highcharts versenden?
- 2. Was sind die Möglichkeiten, Verzeichnis in einzelne Datei zu komprimieren
- 3. komprimierte Datei IO in C++
- 4. Wie kann ich einen Datei-/Ordner-Upload per Drag & Drop implementieren, der rekursiv ist?
- 5. Wie soll ich komprimierte Ordner in Java extrahieren?
- 6. Wie lösche ich eine Datei per Erweiterung in Python?
- 7. Wie kann ich ein Char-Array in eine komprimierte HTML-Seite komprimieren mit Zlib
- 8. Wie verschiebe ich die aktuelle Datei in einen Ordner?
- 9. Wie kann ich eine Datei komprimieren, während ich darauf schreibe?
- 10. zippen einen Ordner/Datei qt
- 11. Microsoft CRM 4.0 Workflow: Wie kann ich eine Liste von verwandten Entitäten per E-Mail versenden?
- 12. Audiodateien auf dem iPhone aufnehmen und per E-Mail versenden?
- 13. Wie kann ich Datei per Kommandozeile über sftp hochladen?
- 14. Magick ++ Dateien komprimieren und dekomprimieren
- 15. Komprimieren Sie einen Ordner mit NTFS-Komprimierung in .NET
- 16. Wie kann ich eine Datei mit einer verflachten Verzeichnisstruktur mit Zipfile in Python komprimieren?
- 17. Komprimieren und Dekomprimieren 7z-Datei in Java
- 18. Warum kann ich einen Ordner nicht ignorieren?
- 19. Komprimieren einen Klecks in Javascript
- 20. Wie kann ich die Komprimierbarkeit einer Datei schätzen, ohne sie zu komprimieren?
- 21. Wie gzip eine Datei, während auch komprimierte Inhalte zu stdout
- 22. Wie kann ich mehrere Textteile über Intent versenden?
- 23. Wie kann ich ein Verzeichnis mit .NET komprimieren?
- 24. Komprimieren einer Datei in Python und halten Sie die Grammatik genau, wenn Sie es wieder öffnen
- 25. Fehler in gzfile (Datei, "wb"): kann die Verbindung oder die komprimierte Datei nicht öffnen
- 26. Python-Code komprimieren
- 27. Wie kann ich einen temporären Ordner in Java 6 erstellen?
- 28. Wie öffne ich einen Ordner?
- 29. Wie kann ich einen öffentlichen HTML-Ordner in Ubuntu erstellen?
- 30. Wie bekomme ich die Videogröße komprimierter Videos per ffmpeg?
Das ist eine höllische Antwort. –
Was ist, wenn der Fragesteller das Hausaufgaben-Tag weggelassen hat? –
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