전자 메일 클래스가 테스트되었으며 유효한 자격 증명이 사용 중일 때 전자 메일을 보낼 수있는 기능이 있습니다. 문제는 여러 프로토콜을 뒤틀린 상태에서 사용할 때입니다. 예를 들어 프로토콜이 메일을 뒤 틀고 꼬인 DNS 또는 트위스티드 IRC 일 때프로그램이 전자 메일을 보낸 후 끝났습니다
작성된 코드는 끝없이 실행되며 이벤트가 트리거되면 DNS가 올바른 도메인을 확인할 수 없거나 DNS 서비스가 작동하지 않는 등의 문제를보고하는 이메일을 받고 싶습니다.하지만 전자 메일을 수신하면 프로그램 종료 (반환 코드 0), 그러므로 클래스 전자 메일에는 내가 잘못 인도 한 코드 조각이 포함되어 있어야합니다. 이미 API를 확인했지만 누락 된 부분에 대해서는 단서가 없습니다.
내가 이메일을 보내 현재 사용하고 클래스 : 당신은 resultDeferred
화재 후 프로그램을 중지 할 reactor.stop
를 호출
class Email:
def __init__(self):
threading.Thread.__init__(self)
self.smtp_server = "SMTP"
self.user_name = "[email protected]"
self.user_password = "MAIL_PASSWORD"
self.portTLS = 587
self.portSSL = 465
def sendEmail(self, m):
contextFactory = ClientContextFactory()
contextFactory.method = SSLv3_METHOD
resultDeferred = Deferred()
senderFactory = ESMTPSenderFactory(
self.user_name,
self.user_password,
self.user_name,
m.to,
m.text,
resultDeferred,
contextFactory=contextFactory)
reactor.connectTCP(self.smtp_server, self.portTLS, senderFactory)
resultDeferred.addCallbacks(self.cbSentMessage, self.ebSentMessage)
return resultDeferred
def cbSentMessage(self, result):
print "Message sent"
reactor.stop()
def ebSentMessage(self, err):
err.printTraceback()
reactor.stop()