smtplib starttls gmail example - comments?
Tim Williams
tim at tdw.net
Wed Jan 24 05:56:28 EST 2007
On 24/01/07, py <py at th.on> wrote:
> I would love for anybody to comment on this code with regard to redundancy/efficiency/wordiness or whatever else.
> for instance, do i understand correctly that i cant have a try: else: without an intervening except:?
> -dave
>
> stdout.write("calling smtp server...")
> try:
> server = SMTP(msgsmtp)
> except:
> stdout.write("FAIL.") #using .write to avoid the implied \n with print
> else:
> server.set_debuglevel(msgdebug)
> stdout.write("starting tls...")
> server.ehlo(msgfrom)
> try: server.starttls()
> except: stdout.write("FAIL.")
> else:
> server.ehlo(msgfrom) #neessary duplication (?)
> stdout.write("logging in...")
> try: server.login(msgfrom, msgpass)
> except: stdout.write("FAIL.")
> else:
> stdout.write("sending...")
> try: server.sendmail(msgfrom, msgto, msgtxt + "\n.\n")
> except: stdout.write("FAIL.")
> else:
> try:
> server.quit()
> except sslerror: # a known and largely ignored issue with early EOF in ssl protocol
> stdout.write("success.")
> else:
> stdout.write("success.")
> --
*** Not tested but should have the same functionality and error
handling as your script ***
this_host = 'myhostname.mydom1.com'
print "calling smtp server...", # the trailing comma removes '\n'
try:
server = smtplib.SMTP(msgsmtp,local_hostname=this_host)
server.set_debuglevel(msgdebug)
print "starting tls...",
server.starttls()
server.ehlo(this_host) # RFC requirement for 2nd EHLO after requesting TLS
print "logging in...",
server.login(msgfrom, msgpass)
print "sending...",
failed = server.sendmail(msgfrom, msgto, msgtxt + "\n.\n")
try:
server.quit()
except: pass
print "success."
except:
print "FAIL.",
if failed:
print "failed:", failed # some recipients, but not all of them, failed
More information about the Python-list
mailing list