def sendMail(self, m, recipients): s = m.as_string() twlog.msg("sending mail ({} bytes) to".format(len(s)), recipients) if self.dumpMailsToLog: # pragma: no cover twlog.msg("mail data:\n{0}".format(s)) result = defer.Deferred() useAuth = self.smtpUser and self.smtpPassword s = unicode2bytes(s) recipients = [parseaddr(r)[1] for r in recipients] sender_factory = ESMTPSenderFactory( unicode2bytes(self.smtpUser), unicode2bytes(self.smtpPassword), parseaddr(self.fromaddr)[1], recipients, BytesIO(s), result, requireTransportSecurity=self.useTls, requireAuthentication=useAuth) if self.useSmtps: reactor.connectSSL(self.relayhost, self.smtpPort, sender_factory, ssl.ClientContextFactory()) else: reactor.connectTCP(self.relayhost, self.smtpPort, sender_factory) return result
def sendmail(self, s, recipients): result = defer.Deferred() if self.smtpUser and self.smtpPassword: useAuth = True else: useAuth = False sender_factory = ESMTPSenderFactory( self.smtpUser, self.smtpPassword, self.fromaddr, recipients, StringIO(s), result, requireTransportSecurity=self.useTls, requireAuthentication=useAuth) if self.useSmtps: reactor.connectSSL(self.relayhost, self.smtpPort, sender_factory, ssl.ClientContextFactory()) else: reactor.connectTCP(self.relayhost, self.smtpPort, sender_factory) return result
def sendMail(self, m, recipients): s = m.as_string() twlog.msg("sending mail (%d bytes) to" % len(s), recipients) result = defer.Deferred() useAuth = self.smtpUser and self.smtpPassword s = unicode2bytes(s) sender_factory = ESMTPSenderFactory( self.smtpUser, self.smtpPassword, self.fromaddr, recipients, BytesIO(s), result, requireTransportSecurity=self.useTls, requireAuthentication=useAuth) if self.useSmtps: reactor.connectSSL(self.relayhost, self.smtpPort, sender_factory, ssl.ClientContextFactory()) else: reactor.connectTCP(self.relayhost, self.smtpPort, sender_factory) return result
def reconfigService(self, host, nick, channels, pm_to_nicks=None, port=6667, allowForce=None, tags=None, password=None, notify_events=None, showBlameList=True, useRevisions=False, useSSL=False, lostDelay=None, failedDelay=None, useColors=True, allowShutdown=None, noticeOnChannel=False, authz=None, **kwargs ): # need to stash these so we can detect changes later self.host = host self.port = port self.nick = nick self.join_channels = channels if pm_to_nicks is None: pm_to_nicks = [] self.pm_to_nicks = pm_to_nicks self.password = password if authz is None: self.authz = {} else: self.authz = authz self.useRevisions = useRevisions self.tags = tags if notify_events is None: notify_events = {} self.notify_events = notify_events self.noticeOnChannel = noticeOnChannel # deprecated... if allowForce is not None: self.authz[('force', 'stop')] = allowForce if allowShutdown is not None: self.authz[('shutdown')] = allowShutdown # ### # This function is only called in case of reconfig with changes # We don't try to be smart here. Just restart the bot if config has # changed. if self.f is not None: self.f.shutdown() self.f = IrcStatusFactory(self.nick, self.password, self.join_channels, self.pm_to_nicks, self.authz, self.tags, self.notify_events, parent=self, noticeOnChannel=noticeOnChannel, useRevisions=useRevisions, showBlameList=showBlameList, lostDelay=lostDelay, failedDelay=failedDelay, useColors=useColors) if useSSL: cf = ssl.ClientContextFactory() c = internet.SSLClient(self.host, self.port, self.f, cf) else: c = internet.TCPClient(self.host, self.port, self.f) c.setServiceParent(self)