def _createCalculator(self): """ Return a L{relaymanager.MXCalculator} which can be used to look up the mail exchange for a domain. """ resolver = client.Resolver(resolv='/etc/resolv.conf') return relaymanager.MXCalculator(resolver)
def getMailExchange(self, host): mxc = relaymanager.MXCalculator() def cbMX(mxRecord): return str(mxRecord.name) return mxc.getMX(host).addCallback(cbMX)
def getMX(): """ Retrieve the single MXCalculator instance, creating it first if necessary. """ global _theMX if _theMX is None: _theMX = relaymanager.MXCalculator() return _theMX
def getMailExchange(self, recipientDomain): resolver = client.Resolver(servers=[('127.0.0.1', 53)]) mxc = relaymanager.MXCalculator(resolver) d = mxc.getMX(recipientDomain) def gotMX(mx): print 'Got mx' resolver.protocol.transport.stopListening() return mx d.addCallback(gotMX) return d
def send_mail(fromaddr, toaddr, subject, body, on_success=sendComplete, on_failure=handleError): try: recpt_domain = toaddr.split('@')[1] except (ValueError, IndexError): raise ValueError, "mal-formed destination address" message = buildMessage(fromaddr, toaddr, subject, body) messageData = message.as_string(unixfrom=False) def on_found_record(mx_rec): smtp_server = str(mx_rec.name) sending = smtp.sendmail(smtp_server, fromaddr, [toaddr], messageData) sending.addCallback(on_success).addErrback(on_failure) relaymanager.MXCalculator().getMX(recpt_domain).addCallback(on_found_record)
def startMailer(session): if config.plugins.crashlogautosubmit.sendmail.value == "send_never": print("[CrashlogAutoSubmit] - not starting CrashlogAutoSubmit") return False def gotMXServer(mx): print("[CrashlogAutoSubmit] gotMXServer: ", mx.name) mxServerFound(mx.name, session) def handleMXError(error): print("[CrashlogAutoSubmit] - MX resolve ERROR:", error.getErrorMessage()) if not config.misc.firstrun.value: relaymanager.MXCalculator().getMX( 'crashlog.dream-multimedia-tv.de').addCallback( gotMXServer).addErrback(handleMXError)
def getMailExchange(host): print "[CrashlogAutoSubmit] - getMailExchange" return relaymanager.MXCalculator().getMX(host).addCallback(_gotMXRecord)
def get_mx(self, host): on_found_record = lambda rec: str(rec.name) # return a deffered that will call on_found_record when it's done. # on_found_record's return value gets passed to exchange_mail return relaymanager.MXCalculator().getMX(host).addCallback(on_found_record)
def getMailExchange(H): def cbMX(mxRecord): return str(mxRecord.name) return relaymanager.MXCalculator().getMX(H).addCallback(cbMX)
from twisted.mail import relaymanager mxCalc = relaymanager.MXCalculator() def getSMTPServer(emailAddress): username, domain = emailAddress.split("@") return mxCalc.getMX(domain).addCallback(__gotMXRecord) def __gotMXRecord(mxRecord): return mxRecord.exchange if __name__ == "__main__": from twisted.internet import reactor import sys address = sys.argv[1] def printServer(server): print server reactor.stop() def handleError(error): print >> sys.stderr, error.getErrorMessage() reactor.stop() getSMTPServer(address).addCallback(printServer).addErrback(handleError) reactor.run()