Hallo zusammen.
Eins vorweg. Bin noch ein ziemlicher Python Newbie.
Jetzt meine Frage:
Ich möchte mit Python Emails mit bestimmten Anhängen verschicken. Wie das mit dem Email verschicken geht is mir schon klar. Aber für den Anhang brauche ich einen bestimmten MIME Typ. Wie kann ich sowas einbinden?
MfG
MaDlocK
Email mit MIME Type
Hi. Ich denk mal, dass gehört unter Netzwerke. Leider kann ich dir nicht konkret helfen, da ich mich auch nur mit dem versenden von Emails mittels der smtplib ohne Anhang beschäftigt habe. Ich weiß aber das es geht und Python die Werkzeuge dafür liefert. Mit dem Modul email hast du ein mächtiges, wenn leider auch nicht leicht zu verstehendes Werkzeug. Damit ist es dir möglich Emailnachrichten inklusive MIME Types zu erstellen, aber nicht zu versenden. Leider kann ich dir hier nicht weiterhelfen, du müsstest dich da durch die Pythondocu wühlen...
Oder du umgehst das ganze und bastelst es dir gleich einfacher zurecht, mittels dem Modul mimetypes. Wenn du mir die Syntax von Emailanhängen erklären kannst, würde ich dir auch mit Code weiterhelfen ...
Milan
Oder du umgehst das ganze und bastelst es dir gleich einfacher zurecht, mittels dem Modul mimetypes. Wenn du mir die Syntax von Emailanhängen erklären kannst, würde ich dir auch mit Code weiterhelfen ...
Milan
Zuerst ma danke für die Info
Das Problem is, dass ich es auch noch nicht geschafft habe, überhaupt einen Anhang an die Mail zu packen, egal welcher Typ von Datei. Darum kann ich dir das leider auch nicht sagen. Alles was ich bisher geschafft hab, ist eine Mail zu verschicken aber ohne Anhang geschweige denn MIME Type Definition.
Das Problem is, dass ich es auch noch nicht geschafft habe, überhaupt einen Anhang an die Mail zu packen, egal welcher Typ von Datei. Darum kann ich dir das leider auch nicht sagen. Alles was ich bisher geschafft hab, ist eine Mail zu verschicken aber ohne Anhang geschweige denn MIME Type Definition.
Hi. Ich hab mal gegooglet und hab ein interessantes Perl-Script gefunden, mit dem du Emails mit Anhang via CGI versenden kannst. Das kannst du bestimmt nach Python anpassen, du musst nur das Webfronted rausnehmen und den Code umformen.
Oder es geht noch besser : eine komplette Anleitung, wenn auch in PHP. Aber soweit ich das überschaut habe, gibt es für alles äquivalente Funktionen in Python. Das dürfte dann an deine wünsche ziemlich nah rankommen. Viel Spaß beim basteln, meld dich mal wenn du es geschafft hast oder es probleme gibt.
Milan
Oder es geht noch besser : eine komplette Anleitung, wenn auch in PHP. Aber soweit ich das überschaut habe, gibt es für alles äquivalente Funktionen in Python. Das dürfte dann an deine wünsche ziemlich nah rankommen. Viel Spaß beim basteln, meld dich mal wenn du es geschafft hast oder es probleme gibt.
Milan
So, weil es mich selber interessiert und weil ich heute sehr gute Nachrichten für meinem Schulprojekt erhalten habe, gibt es wie versprochen ein wenig Code. Ich habs schon getestet, der Emailversand funktioneirt bei mir. Hier ist eine Funktion, die dir aus den entsprechenden Angaben eine Emailnachricht bastelt, die du nur noch via smtplib versenden brauchst. Viel spaß damit.
hth Milan.
hth Milan.
Vielen Dank für die ausführlichen Infos. Das hilft mir auf jeden Fall weiter. Werd mir das jetzt mal genauer anschauen und mich melden, wenn ich`s geschafft hab oder es Probleme gibt.
CyA
MaDlocK
CyA
MaDlocK
@Milan:
Hi! Habe deinen Code Abschnitt zum Verschicken von Mails mit Anhang mal versucht nachzuvollziehen. Schaff es mittlerweile ne Mail mit Anhang zu verschicken aber das Problem ist der MIME Type. Ich will den Anhang nämlich im Dicom MIME Type (application/dicom) codiert abschicken. Nur wie kann ich das Python sagen?
Im Mail Header steht nach Versenden der Nachricht immer multipart/mixed
Und was bedeutet eigentlich dieses Boundary?
MfG
MaDlocK
Hi! Habe deinen Code Abschnitt zum Verschicken von Mails mit Anhang mal versucht nachzuvollziehen. Schaff es mittlerweile ne Mail mit Anhang zu verschicken aber das Problem ist der MIME Type. Ich will den Anhang nämlich im Dicom MIME Type (application/dicom) codiert abschicken. Nur wie kann ich das Python sagen?
Im Mail Header steht nach Versenden der Nachricht immer multipart/mixed
Und was bedeutet eigentlich dieses Boundary?
MfG
MaDlocK
Hi. Am besten überfliegst du nochmal den Link von mir oben zu der PHP-Anleitung: http://www.php4-forum.de/mime_mail.htm. Es ist nämlich unumgänglich, dass im Mailheader multipart/mixed steht. Das sagt dem emailprogramm, dass die Mail aus mehreren Teilen zusammengesetzt ist. Damit das Programm dann aber auch weiß, wo ein Teil beginnt und wo er aufhährt ist ein boundary notwändig, also eine im Header definierte Zeichenkette, die als "Abtrennung" für jeden Einzelteil dient. Die Teile in denen Dateianhänge stehen, werden durch eine Abtrennung (boundary) eingeleitet und dann extra gekennzeichnet (Content-Disposition: attachment). Willst du nun den Mimetype für eine Datei im Anhang mit einem bestimmten Format erzwingen, musst du nur eine Zeile in meinem Code verändern:
wird zu
Oben wurde von Python geschätzt, welcher Mimetype zutrifft und falls keiner gefunden wird, wird standartmäßig application/octet-stream gesetzt. Unten wird dein Mimetype einfach festgeschrieben.
Ich hoffe mal, ich hab jetzt alle Klarheiten beseitig
Milan
Code: Alles auswählen
mimetype=mimetypes.guess_type(dateiname,0)[0] or "application/octet-stream"
Code: Alles auswählen
mimetype="application/dicom"
Ich hoffe mal, ich hab jetzt alle Klarheiten beseitig
Milan
Hey Milan, du hast echt was gut bei mir
Glaub, ich bin ziemlich nah dran...
BIG THX
Wenn ich doch nicht mehr weiterkommen sollte, meld ich mich wieder.
Glaub, ich bin ziemlich nah dran...
BIG THX
Wenn ich doch nicht mehr weiterkommen sollte, meld ich mich wieder.
Jetzt hab ich noch ein kleines Problem:
Gibt es ein Programm oder eine Möglichkeit, wie ich eine Mail mit Anhang komplett textbasiert anzeigen lassen kann, damit ich überprüfen kann, ob die Datei wirklich mit application/dicom codiert wurde?
In jedem Email Programm steht zwar
MIME Version 1.0
Content-Type: multipart/mixed; boundary: dsfsfsdfsdfsdfsf
aber den restlichen Body Part kann ich nicht anschaun
MfG
MaDlocK
Gibt es ein Programm oder eine Möglichkeit, wie ich eine Mail mit Anhang komplett textbasiert anzeigen lassen kann, damit ich überprüfen kann, ob die Datei wirklich mit application/dicom codiert wurde?
In jedem Email Programm steht zwar
MIME Version 1.0
Content-Type: multipart/mixed; boundary: dsfsfsdfsdfsdfsf
aber den restlichen Body Part kann ich nicht anschaun
MfG
MaDlocK
Hi. Das liegt aber wenn an deinem Mailprogramm, mit dem du die Nachricht empfängst. Es gibt bei jedem guten Emailprogramm die Funktion, die Email zu speichern, bzw im Quelltext anzuzeigen (Outlook, The Bat, Kmail...). Rein Text schicken würde ich nicht, dass kann zu Übertragungsfehlern bei Binärdaten kommen.
Milan
Milan
Ja die Option "Speichern" gibts schon, aber dann wird nur der Text der Email in nem Textfile abgespeichert und nicht der Anhang.
Um zu Testen, dass der Anhang in dem gewünschten MIME Type codiert wurde, muss ich den doch binär darstellen, oder?
Bis jetzt seh ich ja nur, dass es eine "multipart/mixed" Mail ist, aber nicht welcher MIME Type für den Anhang verwendet wird.
Greetz
MaDlocK
Um zu Testen, dass der Anhang in dem gewünschten MIME Type codiert wurde, muss ich den doch binär darstellen, oder?
Bis jetzt seh ich ja nur, dass es eine "multipart/mixed" Mail ist, aber nicht welcher MIME Type für den Anhang verwendet wird.
Greetz
MaDlocK