Ist smtp server verbindung offen?

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
raorao
User
Beiträge: 24
Registriert: Mittwoch 30. Dezember 2009, 15:35

Hallo Forum...

Ich brauche smtplib zum versenden von Mails. Dies funktioniert auch wunderbar, da der Verbindungsaufbau zum Server aber unter MacOS teilweise sehr lange dauert, verbinde ich beim Application Start in einem Background Thread. Damit man jederzeit schnell Mails verschicken kann, auch wenn dies erst nach einer Stunde zum ersten Mal geschieht, überprüfe ich alle paar Minuten, ob die Verbindung noch offen ist, falls nicht wird neu verbunden.

Gibt es eine elegante und effiziente Methode um zu überprüfen, ob die Verbindung noch offen ist?

Hier ein ganz kurzes Beispiel:

Code: Alles auswählen

import smtplib, time 

fromaddr = 'me@web.com'  
toaddrs  = 'you@web.com'  
msg = 'There was a terrible error that occured and I wanted you to know!'  

username = 'me@web.com'  
password = '123456'  

server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login(username,password)  

# Wait some time and then check wheter the connection is still valid, but how...?
time.sleep(600)

# if not IS_STILL_VALID:
#     reconnect()

server.sendmail(fromaddr, toaddrs, msg)  
server.quit()
Liebe Grüsse und danke für jeden Tipp!
raorao
nomnom
User
Beiträge: 487
Registriert: Mittwoch 19. Mai 2010, 16:25

raorao hat geschrieben:Hallo Forum...

Ich brauche smtplib zum versenden von Mails. Dies funktioniert auch wunderbar, da der Verbindungsaufbau zum Server aber unter MacOS teilweise sehr lange dauert, verbinde ich beim Application Start in einem Background Thread. Damit man jederzeit schnell Mails verschicken kann, auch wenn dies erst nach einer Stunde zum ersten Mal geschieht, überprüfe ich alle paar Minuten, ob die Verbindung noch offen ist, falls nicht wird neu verbunden.

Gibt es eine elegante und effiziente Methode um zu überprüfen, ob die Verbindung noch offen ist?

Hier ein ganz kurzes Beispiel:

Code: Alles auswählen

import smtplib, time 

fromaddr = 'me@web.com'  
toaddrs  = 'you@web.com'  
msg = 'There was a terrible error that occured and I wanted you to know!'  

username = 'me@web.com'  
password = '123456'  

server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login(username,password)  

# Wait some time and then check wheter the connection is still valid, but how...?
time.sleep(600)

# if not IS_STILL_VALID:
#     reconnect()

server.sendmail(fromaddr, toaddrs, msg)  
server.quit()
Liebe Grüsse und danke für jeden Tipp!
raorao
Mit SMTP.noop()?
raorao
User
Beiträge: 24
Registriert: Mittwoch 30. Dezember 2009, 15:35

Super, vielen Dank! Dies funktioniert perfekt, auch mit server.verify('') hats wunderbar funktioniert, es sind auch beide Methoden ungefähr gleich performant (<0.05s). Einen schönen Abend noch!
Antworten