2017-06-16 44 views
0

我正在嘗試使用Buildbot的reporter.MailNotifier爲每個構建設置一個簡單的電子郵件通知系統。我已經在兩臺Windows計算機和一臺Linux機器上實現了它,並複製了相同的錯誤。這裏是代碼片段Buildbot MailNotifier錯誤

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 protected]', sendToInterestedUsers=False, 
          relayhost="smtp.gmail.com",smtpPort=587, useTls=True, 
          extraRecipients=["[email protected]"], 
          smtpUser="[email protected]", smtpPassword="email_password") 
c['services'] = [mn] 

但是,每次我收到以下錯誤twistd.log時間:

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上Buildbot 0.9.8和0.9.1錯誤10(64位)和Ubuntu 14.04。錯誤日誌來自Python 2.7.13 virtualenv 15.1.0 twisted 17.5.0。在_parseaddr.py中插入以下代碼,但我正在尋找更好的修復方法。

if str(type(self.field)) == "<type 'module'>": 
    return [('',u'[email protected]')] 

回答

3

這是在最近的扭曲釋放的錯字17.5.0

環遊類SMTPSenderFactory的構造扭曲/郵件/ smtp.py的1900行:

toEmailFinal.append(email) 
應該

已被

toEmailFinal.append(_email) 

前者傳遞了整個電子郵件模塊,而不是傳遞解析的ema il,這產生了錯誤。較新的版本可能會解決此問題,或者您可以手動替換文件中的行。該修復(通過rodrigc)可在此找到GitHub commit