关于TRAC不能发mail的解释
首先在trac.ini文件中配置一下mail选项和日志选项。使日志文件记录可以开启。通过查看日志。看到以下问题
raceback (most recent call last):
File "C:\Python24\Lib\site-packages\trac\ticket\web_ui.py", line 562, in _do_save tn.notify(ticket, newticket=False, modtime=now) File "C:\Python24\Lib\site-packages\trac\ticket\notification.py", line 129, in notify NotifyEmail.notify(self, ticket.id, subject) File "C:\Python24\Lib\site-packages\trac\notification.py", line 216, in notify Notify.notify(self, resid) File "C:\Python24\Lib\site-packages\trac\notification.py", line 114, in notify self.begin_send() File "C:\Python24\Lib\site-packages\trac\notification.py", line 287, in begin_send self.server.login(self.user_name, self.password) File "C:\Python24\lib\smtplib.py", line 591, in login raise SMTPAuthenticationError(code, resp) SMTPAuthenticationError: (334, 'UGFzc3dvcmQ6') 其他的提示也差不多是这一种了
其实上述只是提供了一个程序调用的过程。在调用smtplib。py这个模块的时候出了问题
通过抓包显示(EHLO WINEYWFBF1TTDV 250-AUTH=LOGIN 250 AUTH LOGIN)。邮件服务器返回的是 auth=LOGIN,多了一个'=',所以我就在smtplib.py文件中的第569行加了这一段
if '='+method in authlist:
authmethod = method break # 以下程序(585行)
# Three stage: 1. sent "AUTH LOGIN"; 2. sent "user name"; 3. sent "password".
# origial code combine stage 1 & 2 as below line: #(code, resp) = self.docmd("AUTH","%s %s" % (AUTH_LOGIN, encode_base64(user, eol=""))) (code, resp) = self.docmd("AUTH",
"%s %s" % (AUTH_LOGIN, encode_base64(user, eol=""))) 修改为
(code, resp) = self.docmd("AUTH", AUTH_LOGIN)
保存后就肯定可以发邮件了啊。不知道最新版本是否解决了这个问题。大家可以测试一下啊! 本文出自 51CTO.COM技术博客 |


dadekey
博客统计信息
热门文章
最新评论
友情链接