Modul zum Senden von Emails (simplemail.py)

Code-Stücke können hier veröffentlicht werden.
philippe
User
Beiträge: 4
Registriert: Mittwoch 7. November 2007, 20:54

mail queue

Beitragvon philippe » Mittwoch 19. Dezember 2007, 22:10

ersten möchte ich an dieser stelle mitteilen, dass auch ich simplemail.py echt super finde!
zweitens bedanke ich mich bei gerold, der mir bei meinem dummen problem auf die sprünge geholfen hat....

aber der wahre grund für mein post ist folgender:
ich verwende nun simplemail seit einiger zeit und musste feststellen, dass bei kurzen netzunterbrüchen in ungünstigen momenten (wireless und co.) email verlohren gehen können. ich schreibe beim scheitern von send() einen logeintag so weiss ich was nicht versendet wurde (...) aber viel lieber wäre mir gar nichts unternehmen zu müssen - händisch versteht sich ;) .

nun meine idee:
ich will einen art email queue schreiben, welche die email bis zu 3 tagen zurück hält bis diese erfolgreich zugestellt werden konnte.

mein ansatz (pseudo code):
[code=]
loop mit 864 durchgängen:
sendeversuch
wenn erfolgreich: ende
sonst: 300 sekunden schlafen
zustellung gescheitert: logeintrag schreibe.
[/code]

vorteile:
- mail kann wahrscheinlich irgendwann zugestellt werden (innert 3 tagen)

nachteile:
- objekt im speicher
- laufender prozess, im schlechtesten fall 3 tage

fragen:
- hat jemand eine bessere idee?
- was kann verbessert werden??

mfg, philippe
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Re: mail queue

Beitragvon Leonidas » Mittwoch 19. Dezember 2007, 23:03

philippe hat geschrieben:fragen:
- hat jemand eine bessere idee?

Also der Unix-Way ist, die Mail an den lokalen MTA zu vergeben und der soll sich darum kümmern. Dafür haben MTAs auch ihre Queues, wo sie Mails zwischenlagern, die gerade nicht weitergerelayt werden können. Man muss zugeben, dass SMTP ein recht robustes System ist (eben etwas was auch bei großen Netzwerkausfällen verursacht durch Atomwaffen - siehe ARPAnet noch läuft). Schade dass das durch das Spamming alles so zurückgedreht werden musste.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Beitragvon gerold » Donnerstag 20. Dezember 2007, 07:53

Hallo philippe!

Ich halte den Vorschlag von Leonidas für die beste Lösung für dich. Unter Linux ist es ja kein großes Problem, einen MTA wie z.B. Postfix zu installieren. Die Emails verschickst du dann über den lokal eingerichteten SMTP-Server. Dieser kümmert sich dann um all das was du dir selber programmieren wolltest.

Unter Windows kannst du es mal mit dem JanaServer http://janaserver.de/ probieren. Wenn es damit nicht funktioniert, dann kannst du immer noch auf den mit *Cygwin* gelieferten *Exim* zurück greifen.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Donnerstag 20. Dezember 2007, 11:39

gerold hat geschrieben:Unter Windows kannst du es mal mit dem JanaServer http://janaserver.de/ probieren. Wenn es damit nicht funktioniert, dann kannst du immer noch auf den mit *Cygwin* gelieferten *Exim* zurück greifen.

Daneben gibt es noch Hamster und Mercury, die beides Windows SMTP-Daemons sind.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
DatenMetzgerX
User
Beiträge: 398
Registriert: Freitag 28. April 2006, 06:28
Wohnort: Zürich Seebach (CH)

Beitragvon DatenMetzgerX » Donnerstag 20. Dezember 2007, 17:46

oder hMailServer, der ziemlich leicht zu konfigurieren ist
philippe
User
Beiträge: 4
Registriert: Mittwoch 7. November 2007, 20:54

Beitragvon philippe » Freitag 28. Dezember 2007, 14:32

besten dank für eure feedbacks,
ich werde mal brav Postfix installieren =)
Benutzeravatar
Hyperion
Moderator
Beiträge: 7472
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Beitragvon Hyperion » Samstag 5. Januar 2008, 14:57

Hallo Gerold,

vielen Dank für Dein Modul. Ich habe es erfolgreich für die Lehre hier an der Uni einsetzen können (Bestätigungsmail an Studis, nach einer Anmeldung für eine kleine Aufgabe im HTML-Bereich). Eine Kleinigekeit würde ich gerne anmerken: Wäre toll, wenn mann das encoding des Outputs angeben könnte! (Ich habs im Quellcode hart reincodiert / bzw. geändert, aber das geht sicher eleganter) Oder hab ich nur die Möglichkeit übersehen?

Auf jeden Fall sehr schön!

Ciao,
Hyperion
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Beitragvon gerold » Samstag 5. Januar 2008, 15:21

Hyperion hat geschrieben:Wäre toll, wenn mann das encoding des Outputs angeben könnte!

Hallo Hyperion!

Die Attribute *content_charset* und *header_charset* sind dafür zuständig. Diese kann man zwar nicht direkt über die Methode *send()* einstellen, aber nach dem Initialisieren der Klasse *Email* neu setzen.

Code: Alles auswählen

email = Email(...)
email.content_charset = "utf-8"
email.header_charset = "utf-8"
email.send(...)

http://gelb.bcom.at/trac/simplemail/bro ... il.py#L209

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs

Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7472
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Beitragvon Hyperion » Samstag 5. Januar 2008, 15:49

*patsch* Ok, war damals in Zeitnot ... hätte ich auch so drauf kommen können ;) Hatte keine Instanz erstellt, sondern das ganze direkt abgesetzt, also

Code: Alles auswählen

Email(...=...).send()

Ok, nun weiß ich ja aber, dass es auch besser geht :D

Danke Dir!
mr.hide
User
Beiträge: 108
Registriert: Montag 29. August 2005, 14:02

Beitragvon mr.hide » Mittwoch 27. Februar 2008, 15:54

Habs für mich nun erweitert, so dass man Bilder direkt in die Email einbinden kann.
hab Gerold angeboten es ihm zu geben.

Bei Interesse falls er sich nicht die ARbeit macht das einzubinden pn an mich.
Grüße
Matthias

- Fluchen befreit von Kummer und Leid -
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Beitragvon gerold » Dienstag 11. März 2008, 12:43

mr.hide hat geschrieben:Habs für mich nun erweitert, so dass man Bilder direkt in die Email einbinden kann.

Hallo Leute!

Ich bin im Moment ein wenig überlastet. Deshalb habe ich den Code von mr.hide in einen Subversion-Branch gestellt.

http://gelb.bcom.at/svn/pub/simplemail/ ... s/mr.hide/

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs

Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
EnTeQuAk
User
Beiträge: 986
Registriert: Freitag 21. Juli 2006, 15:03
Wohnort: Berlin
Kontaktdaten:

Beitragvon EnTeQuAk » Freitag 11. April 2008, 08:46

Ich bin noch nicht ganz fertig, aber ich bin grad dabei simplemail ein wenig aufzupeppen und zu erweitern.

Erstmal den Quelltext aufgeräumt und einige Altlasten entfernt: http://paste.pocoo.org/show/39500/

Nun, es ist nicht mehr 100%ig Rückwertskompatibel, aber das war nicht mein Ziel. Demnächst wird noch ein einfacheres SMTP-Interface sowie ein einfaches Alternative-Multipart interface, um HTML und Textnachrichten einfach zu mixen.

Mal schaun, was draus wird :D

MfG EnTeQuAk

EDIT: link zur fehlerbereinigten Version aktualisiert
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

Beitragvon mkesper » Freitag 11. April 2008, 14:56

Gibt's eine Chance, dass das eines Tages als offizielles Modul oder im pypi auftaucht?
lunar

Beitragvon lunar » Dienstag 22. April 2008, 11:29

mkallas hat geschrieben:Gibt's eine Chance, dass das eines Tages als offizielles Modul oder im pypi auftaucht?

Die LGPL erlaubt dir, den Code unter gleichen Lizenzbedingungen zu verändern und weiterzugeben. Ergo darfst du auch selbst ein Setuptools-Script dafür schreiben und das Ganze in den Cheeseshop packen ;) Wenn gerold dann das Paket übernehmen will, kannst du ihn ja als Maintainer oder Owner eintragen.
EnTeQuAk
User
Beiträge: 986
Registriert: Freitag 21. Juli 2006, 15:03
Wohnort: Berlin
Kontaktdaten:

Beitragvon EnTeQuAk » Montag 2. Juni 2008, 13:34

Ich hab vor einiger Zeit an simplemail wieder weitergebastelt, rausgekommen ist eine bessere Aufteilung zwischen SMTP geblapper und dem eigentlichen Email wrapper.

Siehe http://trac.webshox.org/browser/misc/simplemail.py

Es ist auch alles schön dokumentiert, ok ne deutsche version werd ich wohl mal demnächst schreiben.
Sofern noch jemand ne Idee hat, was man verbessern kann, immer her damit! Das Interface zum benutzen ist fast das gleiche geblieben siehe das unten angefügte Beispiel (inner simplemail.py)


MfG EnTeQuAk

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder