In article <c82d8338-c196-400a-9c09-c8f6dbc25...@l35g2000vba.googlegroups.com>, Bev in TX <countryon...@yahoo.com> wrote: > On Aug 21, 8:34 am, Bev in TX <countryon...@yahoo.com> wrote: > > Hi, > > > > I've done some Python programming, but I still consider myself a > > Python newbie. I have a Mac Pro OS X 10.5.8 system and I installed > > Python 2.6.2 (the latest package available for the Mac) yesterday. > > > > I was working through Matt Wilson's article on using the logging > > module:http://blog.tplus1.com/index.php/2007/09/28/the-python-logging-module > > ... > > (If that does not work, then try:http://tinyurl.com/5v2lcy) > > > > Everything worked great until his last example. My ISP does not > > provide e-mail, so I tried using gmail in the line that sets h2. I > > substituted "mailid" for my actual e-mail address in the following > > examples; in my test I used my actual e-mail ID. Also, I used the > > full path to the newly installed Python 2.6.2; otherwise it picked up > > the older Python 2.5: > > #!/Library/Frameworks/Python.framework/Versions/2.6/bin/python > > > > First attempt: > > h2 = logging.handlers.SMTPHandler('smtp.gmail.com', 'mai...@gmail.com', > > ['mai...@gmail.com'],'ERROR log') > > However, that caused the following error to be issued: > > > > Traceback (most recent call last): > > File "/Library/Frameworks/Python.framework/Versions/2.6/lib/ > > python2.6/logging/handlers.py", line 868, in emit > > smtp.sendmail(self.fromaddr, self.toaddrs, msg) > > File "/Library/Frameworks/Python.framework/Versions/2.6/lib/ > > python2.6/smtplib.py", line 698, in sendmail > > raise SMTPSenderRefused(code, resp, from_addr) > > SMTPSenderRefused: (530, '5.7.0 Must issue a STARTTLS command first. > > 7sm3867994qwf.47', 'mai...@gmail.com')
The problem here is that gmail, like most modern mail services, requires the use of an encrypted (SSL or TLS) connection for mail relaying so that the required user name and password are not sent in the clear. The logging SMTP handler uses the smtplib module from the standard module to send mail and, when built properly, smtplib does support TLS. However, the caller of smtplib does need to do some extra work in that case, i.e. it needs to call the server object's starttls method at the right point in the protocol handshaking. It's currently not done automatically in smtplib and, unfortunately, there is no code in the logging smtp handler to detect the need for and to call starttls (in response to a 250-STARTTLS response to an EHLO). To make this work, either the logging module or, perhaps better, the smptlib module needs to be smarter about this case. I didn't see an open issue on the Python bug tracker about this; you might want to open one. In the meantime, some options would be to find an SMTP mail host that doesn't require TLS. Or write a custom logger. Or on OS X it's not *too* difficult to set up a local host mailer using the Apple-supplied prefix that would accept mail locally and forward it to a more sophisticated remote mailer. -- Ned Deily, n...@acm.org -- http://mail.python.org/mailman/listinfo/python-list