On 1/24/07, Tim Williams <[EMAIL PROTECTED]> wrote:
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
Both examples have included the cardinal sin in smtp...
They both send the message text followed by new line dot new line.
The smtp protocol specifically mentions CRLF dot CRLF. Please please
please use \r\n.\r\n in your code...
--
We are all slave to our own paradigm. -- Joshua Williams
--
http://mail.python.org/mailman/listinfo/python-list