2017-06-16 8 views
0

Ich versuche, ein einfaches E-Mail-Benachrichtigungssystem für jeden Build mit Buildbot's reporter.MailNotifier einzurichten. Ich habe es auf zwei Windows-Computern und einem Linux-Rechner implementiert und den gleichen Fehler repliziert. Hier ist der Code-SchnipselBuildbot MailNotifier Fehler

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] 

aber jedes Mal wenn ich die folgenden Fehler in twistd.log erhalten:

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() 

Schnellinfo: Fehler auf beiden Buildbot 0.9.8 und 0.9.1 unter Windows erscheinen 10 (64-Bit) und Ubuntu 14.04. Das Fehlerprotokoll ist von Python 2.7.13 virtualenv 15.1.0 twisted 17.5.0. Das Einfügen des folgenden Codes in _parseaddr.py funktioniert, aber ich suche nach einer besseren Lösung.

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

Antwort

3

Es war ein Tippfehler in der jüngsten Version von Twisted-17.5.0

Strecken Linie 1900 von Twisted/mail/smtp.py im Konstruktor der Klasse SMTPSenderFactory:

toEmailFinal.append(email) 

sollte wurden

toEmailFinal.append(_email) 

Die ehemalige übergeben das gesamte E-Mail-Modul statt nur die geparste Ema übergeben il, der den Fehler erzeugt hat. Die neueren Versionen werden das wahrscheinlich beheben oder Sie können die Zeile in der Datei manuell ersetzen. Das Fix (von rodrigc) kann in diesem GitHub commit

gefunden werden
Verwandte Themen