首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Buildbot MailNotifier错误

Buildbot MailNotifier错误
EN

Stack Overflow用户
提问于 2017-06-16 04:39:15
回答 1查看 330关注 0票数 0

我试图建立一个简单的电子邮件通知系统,为每一个构建使用Buildbot的reporter.MailNotifier。我已经在两台Windows计算机和一台linux机器上实现了它,并复制了相同的错误。下面是代码片段

代码语言:javascript
复制
from buildbot.plugins import *

c = BuildmasterConfig = {}
#Added workers, protocols, and other configurations

#Test scheduler
c['schedulers'] = [schedulers.Periodic(name="tester", builderNames=["runtest"], periodicBuildTimer=60)]

####### BUILDBOT SERVICES
mn = reporters.MailNotifier(fromaddr='email@gmail.com', sendToInterestedUsers=False,
                            relayhost="smtp.gmail.com",smtpPort=587, useTls=True,
                            extraRecipients=["email@gmail.com"],
                            smtpUser="email@gmail.com", smtpPassword="email_password")
c['services'] = [mn]

但是,每次在twistd.log中收到以下错误时:

代码语言:javascript
复制
2017-06-15 21:20:14-0700 [ESMTPSender,client] SMTP Client retrying server. Retry: 1
2017-06-15 21:20:15-0700 [ESMTPSender,client] Unhandled Error
    Traceback (most recent call last):
      File "c:\users\me\buildbot\sandbox\lib\site-packages\twisted\python\log.py", line 103, in callWithLogger
        return callWithContext({"system": lp}, func, *args, **kw)
      File "c:\users\me\buildbot\sandbox\lib\site-packages\twisted\python\log.py", line 86, in callWithContext
        return context.call({ILogContext: newCtx}, func, *args, **kw)
      File "c:\users\me\buildbot\sandbox\lib\site-packages\twisted\python\context.py", line 122, in callWithContext
        return self.currentContext().callWithContext(ctx, func, *args, **kw)
      File "c:\users\me\buildbot\sandbox\lib\site-packages\twisted\python\context.py", line 85, in callWithContext
        return func(*args,**kw)
    --- <exception caught here> ---
      File "c:\users\me\buildbot\sandbox\lib\site-packages\twisted\internet\selectreactor.py", line 149, in _doReadOrWrite
        why = getattr(selectable, method)()
      File "c:\users\me\buildbot\sandbox\lib\site-packages\twisted\internet\tcp.py", line 208, in doRead
        return self._dataReceived(data)
      File "c:\users\me\buildbot\sandbox\lib\site-packages\twisted\internet\tcp.py", line 214, in _dataReceived
        rval = self.protocol.dataReceived(data)
      File "c:\users\me\buildbot\sandbox\lib\site-packages\twisted\protocols\tls.py", line 330, in dataReceived
        self._flushReceiveBIO()
      File "c:\users\me\buildbot\sandbox\lib\site-packages\twisted\protocols\tls.py", line 295, in _flushReceiveBIO
        ProtocolWrapper.dataReceived(self, bytes)
      File "c:\users\me\buildbot\sandbox\lib\site-packages\twisted\protocols\policies.py", line 120, in dataReceived
        self.wrappedProtocol.dataReceived(data)
      File "c:\users\me\buildbot\sandbox\lib\site-packages\twisted\protocols\basic.py", line 571, in dataReceived
        why = self.lineReceived(line)
      File "c:\users\me\buildbot\sandbox\lib\site-packages\twisted\mail\smtp.py", line 995, in lineReceived
        why = self._okresponse(self.code, b'\n'.join(self.resp))
      File "c:\users\me\buildbot\sandbox\lib\site-packages\twisted\mail\smtp.py", line 1044, in smtpState_to
        return self.smtpState_toOrData(0, b'')
      File "c:\users\me\buildbot\sandbox\lib\site-packages\twisted\mail\smtp.py", line 1062, in smtpState_toOrData
        self.sendLine(b'RCPT TO:' + quoteaddr(self.lastAddress))
      File "c:\users\me\buildbot\sandbox\lib\site-packages\twisted\mail\smtp.py", line 179, in quoteaddr
        res = email.utils.parseaddr(addr)
      File "c:\python27\Lib\email\utils.py", line 214, in parseaddr
        addrs = _AddressList(addr).addresslist
      File "c:\python27\Lib\email\_parseaddr.py", line 457, in __init__
        self.addresslist = self.getaddrlist()
      File "c:\python27\Lib\email\_parseaddr.py", line 217, in getaddrlist
        while self.pos < len(self.field):
    exceptions.TypeError: object of type 'module' has no len()

快速信息:在Windows 10 (64位)和Ubuntu 14.04上,Buildbot 0.9.8和0.9.1都会出现错误。错误日志来自Python2.7.13 virtualenv 15.1.0扭曲17.5.0。在_parseaddr.py中插入以下代码是可行的,但我正在寻找更好的修复方法。

代码语言:javascript
复制
if str(type(self.field)) == "<type 'module'>":
    return [('',u'email@gmail.com')]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-16 06:21:20

这是Twisted 17.5.0的最新版本中的一个错误

围绕类SMTPSenderFactory构造函数中扭曲/mail/smtp.py的第1900行:

代码语言:javascript
复制
toEmailFinal.append(email)

应该是

代码语言:javascript
复制
toEmailFinal.append(_email)

前者传递了整个电子邮件模块,而不是仅仅传递解析的电子邮件,从而产生了错误。较新的版本可能会修复这个问题,或者您可以手动替换文件中的行。修复(由罗德里格茨)可以在这个GitHub提交中找到

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44580929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档