Mail mit Anhang versenden

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
MotD
User
Beiträge: 2
Registriert: Sonntag 24. August 2008, 17:05

Hallo,
ich schreibe gerade ein Programm, was den Anhang einer Mail auslesen soll und ihn dann an ein anderes Programm weitergibt..

Ich habe im Internet bis jetzt keine Lösung gefunden um den Anhang einzeln zu bekommen :(
Ich hoffe jemand von euch kann mir weiterhelfen :)

Vielen Dank im Vorraus
Nicolas
kaschu
User
Beiträge: 25
Registriert: Sonntag 25. Februar 2007, 14:15

Hi MotD,

ich habe hier mal ein altes Python Programm ausgebuddelt, welches eine E-Mail über stdin liest und ein angehängtes PDF ins aktuelle Arbeitsverzeichnis abspeichert. Das solltest Du für Deine Zwecke aufbohren können:

Code: Alles auswählen

#!/usr/bin/env python

import os, sys
import email, mimetypes

def savemail():
    msg = email.message_from_file(sys.stdin)
    for part in msg.walk():
        if part.get_content_maintype() == 'multipart':
            continue
        filename = part.get_filename()
        if filename and filename.endswith(".pdf") :
            fp = open(filename, 'wb')
            fp.write(part.get_payload(decode=1))
            fp.close()

if __name__ == '__main__':
    savemail()

hth
kaschu
abgdf

Hi,

da hatte ich mal das hier geschrieben:

http://www.linux-club.de/viewtopic.php?t=78046

(am Ende). Das scheint erstaunlich beliebt zu sein, jedenfalls habe ich dazu schon mehrfach Email-Feedback erhalten.

Die Zeile

Code: Alles auswählen

attachedcontents.append(part.get_payload())
sollte allerdings

Code: Alles auswählen

attachedcontents.append(part.get_payload(decode = True))
lauten, sonst gibt's Codingprobleme. Leider kann ich das nicht auf der anderen Seite ändern, weil der Thread dort gesperrt ist (hatte das dem Moderator dort schonmal gesagt, aber er konnte es wohl irgendwie nicht entsperren).

HTH
MotD
User
Beiträge: 2
Registriert: Sonntag 24. August 2008, 17:05

Vielen Dank ihr beiden :)
Ich habe das Script von abgdf genommen und alles funktioniert problemlos :)

MfG
Nico
Antworten