Modul zum Senden von Emails (simplemail.py)

Code-Stücke können hier veröffentlicht werden.
Alexci
User
Beiträge: 44
Registriert: Dienstag 18. April 2006, 23:08

Hallo!

Es funktioniert... Ich kann mich nur noch einmal bedanken!

Mit freundlichen Gruessen,
Aleksandar
jhamel
User
Beiträge: 37
Registriert: Sonntag 2. Juli 2006, 16:03
Wohnort: Ostwestfalen
Kontaktdaten:

gerold hat geschrieben:Natürlich darfst du es verwenden. Deshalb habe ich es hier rein gestellt und es freut mich, wenn es verwendet wird.

Das mit der Authentifizierung werde ich demnächst einbauen. Da sieht man wieder, wie schnell etwas vergessen wird, wenn man etwas selbst nicht braucht. :shock:

Danke für den Hinweis. :D

mfg
Gerold
:-)
Hallo Gerold,
ich habe dein simplemail ebenfalls in mein Projekt (www.cuon.org) eingebaut und bin wirklich begeistert. Danke für die prima Arbeit.

Jürgen Hamel
lost_mind
User
Beiträge: 82
Registriert: Dienstag 13. Februar 2007, 11:55

Hi ne frage kann simple mail auch mit proxys umgehen ?

wenn ich mit folgendem send will:

Code: Alles auswählen

from simplemail import Email

for i in range(10):
        Email(
        from_address = "test@test.at",
        to_address = "censored@censored.com",
        subject = "test",
        message = "testmessage"
        ).send()
ich bekomme dies fehlermeldung:

Code: Alles auswählen

Traceback (most recent call last):
  File "C:\Dokumente und Einstellungen\cwo\Desktop\python\send.py", line 8, in <module>
    message = "testmessage"
  File "C:\Dokumente und Einstellungen\cwo\Desktop\python\simplemail.py", line 487, in send
    smtp.connect(self.smtp_server)
  File "C:\Python25\Lib\smtplib.py", line 310, in connect
    raise socket.error, msg
error: (10061, 'Connection refused')
sry das ich hier noch poste ist aber wichtig
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

lost_mind hat geschrieben:Hi ne frage kann simple mail auch mit proxys umgehen ?

Code: Alles auswählen

    smtp.connect(self.smtp_server)
  File "C:\Python25\Lib\smtplib.py", line 310, in connect
    raise socket.error, msg
error: (10061, 'Connection refused')
Hallo lost_mind!

simplemail ist kein SMTP-Server, sondern nur ein SMTP-Client. Damit kannst du Emails verschicken, wenn du zugriff zu einem SMTP-Server hast. Normalerweise bekommst du die SMTP-Zugangsdaten von deinem Internetprovider zur Verfügung gestellt.

Wenn also das Senden nicht funktioniert, weil "Connection refused", dann musst du simplemail mit den korrekten Zugangsdaten füttern.

http://www.python-forum.de/post-23497.html#23497

Falls du doch hinter einem Email-Proxy liegst, dann musst du schon mehr Informationen dazu liefern. ;-)

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
lost_mind
User
Beiträge: 82
Registriert: Dienstag 13. Februar 2007, 11:55

arr sry ich hab extra noch die seiten durchgeblättert aber den posts übersehen naja ich hätte mir auch denken können das das script den smtp server nicht erraten kann *kopfschüttel* sry für diese 2 unnötigen posts :(

aber thx für die hilfe :) gleich mal testen
x-herbert
User
Beiträge: 59
Registriert: Mittwoch 27. November 2002, 20:52

Hi!

Die Sache sieht recht gut aus! Hat sich schon mal jemand an die Sache gewagt in den HTML-Emals Bilder "einzufügen"??
gruss x-herbert
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

x-herbert hat geschrieben:Hat sich schon mal jemand an die Sache gewagt in den HTML-Emals Bilder "einzufügen"??
Hallo x-herbert!

Leider nein. Ich persönlich brauche so etwas im Moment nicht und glaube nicht, dass ich diese Funktion demnächst hinzu fügen werde. Aber vielleicht braucht jemand so etwas, programmiert es dazu und schickt mir einen Patch. :-)

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
querdenker
User
Beiträge: 424
Registriert: Montag 28. Juli 2003, 16:19
Wohnort: /dev/reality

Ich muß gerade mal ein dickes großes


DANKE

an gerold loswerden!


Hast mir heute den Tag gerettet!
Mußte für die Kunden unserer Serverfarm ein Rundschreiben abschicken und wir haben keine eM@il-Addressen, die ich direkt abzapfen kann.
Also Script gebastelt, das mir alle eM@il-Addressen aus den Stammdaten der Kunden zergelt und damit eine mail nach der anderen rausgeschickt.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

querdenker hat geschrieben:Hast mir heute den Tag gerettet!
Das freut mich. :D Das ist meine Lieblingsbeschäftigung. ;-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
BlackJack

Hm, das ist das typische Superhelden-Verhalten. Bist Du am Ende etwa der Bicycle Repair Man!? :-D
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

BlackJack hat geschrieben:Bist Du am Ende etwa der Bicycle Repair Man!? :-D
Bitte nicht verraten... :oops:
http://www.youtube.com/watch?v=rxfzm9dfqBw

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

Ich habe heute auch ``simplemail.py`` wieder rausgepackt und dabei sind mir einige Dinge aufgefallen:
  • Die Exceptions sind mehrsprachig. Halte ich für sehr seltsam, vor allem wenn mehr Sprachen dazu kommen sollten.
  • Die Exceptions haben Bodenstriche im Namen. Halte ich auch für seltsam, da es Klassen sind und da niemand Bodenstriche in Exceptions nutzt. Könnte man sicherlich auch rückwärtskompatibel lösen.
  • Die Angabe von Useragent? Erstens ist es in Useragents üblich statt Leerzeichen Slashes für die Version zu nutzen (siehe urllib und dieses 'v' wegzulassen) und zweitens möchte ich in die Überlegung in die Runde werfen X-Mailer zu verwenden. Leider konnte ich auf die schnelle nicht herausfinden, welches von den Feldern das "richtige" ist.
  • Mir fehlt irgendwie die Möglichkeit eigene Header zu definieren. Bin ich unfähig die zu finden oder ist das nicht vorgesehen?
Ansonsten: ist schon ziemlich praktisch, das simplemail.py.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Leonidas hat geschrieben:Ich habe heute auch ``simplemail.py`` wieder rausgepackt und dabei sind mir einige Dinge aufgefallen:
Hallo Leonidas!

Danke für deine Kritik. Ich werde mir alles noch einmal durch den Kopf gehen lassen und ausbessern. 8)

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

gerold hat geschrieben:Ich werde mir alles noch einmal durch den Kopf gehen lassen und ausbessern. 8)
Super, danke. ich bin grade dabei einen Autoresponder zu implementieren (sowas wie ``vacation``) und da muss ich bestimmte Header setzen können, damit der Empfänger, bzw. das Programm des Empfängers weiß, dass die Mail automatisch generiert wurde und keine Antwort erfordert.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Hi @ all und besonders Leonidas!

Es gibt wieder eine neue Version von SimpleMail.

>> Download: http://gelb.bcom.at/trac/simplemail/bro ... format=raw <<

Quellcode ansehen: http://gelb.bcom.at/trac/simplemail/bro ... plemail.py
Trac: http://gelb.bcom.at/trac/simplemail/
History: http://gelb.bcom.at/trac/simplemail/bro ... istory.rst

@Leonidas: Ich habe versucht deine Anregungen so abwärtskompatibel wie möglich umzusetzen. Wenn dir noch etwas auffällt, einfach wieder melden.

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
philippe
User
Beiträge: 4
Registriert: Mittwoch 7. November 2007, 20:54

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: Alles auswählen

loop mit 864 durchgängen:
     sendeversuch
     wenn erfolgreich: ende
     sonst: 300 sekunden schlafen
zustellung gescheitert: logeintrag schreibe.
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
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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 (former) Modvoice
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

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.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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 (former) Modvoice
Benutzeravatar
DatenMetzgerX
User
Beiträge: 398
Registriert: Freitag 28. April 2006, 06:28
Wohnort: Zürich Seebach (CH)

oder hMailServer, der ziemlich leicht zu konfigurieren ist
Antworten