On 24/01/07, py <[EMAIL PROTECTED]> 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 -- http://mail.python.org/mailman/listinfo/python-list