[英]Sending/Receiving E-mail with Python smtpd module
我正在嘗試使用 Python smtpd模塊制作一個簡單的 smtp 服務器。 我可以收到一封電子郵件並打印出來。 我嘗試將電子郵件發送回給我發送帶有 hello world 消息的電子郵件的人,但我最終陷入了無限循環。 我嘗試使用自己的服務器發送電子郵件,它只是將其解釋為已收到的另一封電子郵件。
如何使用它來發送和接收電子郵件?
import smtplib, smtpd
import asyncore
import email.utils
from email.mime.text import MIMEText
import threading
class SMTPReceiver(smtpd.SMTPServer):
def process_message(self, peer, mailfrom, rcpttos, data):
print 'Receiving message from:', peer
print 'Message addressed from:', mailfrom
print 'Message addressed to :', rcpttos
print 'Message length :', len(data)
print data
def send_response():
msg = MIMEText('Hello world!')
msg['To'] = email.utils.formataddr(('Recipient', mailfrom))
msg['From'] = email.utils.formataddr(('Author', 'jsternberg@example.org'))
msg['Subject'] = ''
print 'Connecting to mail server'
server = smtplib.SMTP()
server.set_debuglevel(1)
server.connect()
print 'Attempting to send message'
try:
server.sendmail('jsternberg@example.org', [mailfrom], msg.as_string())
except Exception, ex:
print 'Could not send mail', ex
finally:
server.quit()
print 'Finished sending message'
threading.Thread(target=send_response).start()
return
def main():
server = SMTPReceiver(('', 25), None)
asyncore.loop()
if __name__ == '__main__':
main()
注意:在示例中未使用真實的電子郵件地址。 注意 2:不將其用作郵件服務器。 只想為簡單的服務發送/接收簡單的電子郵件。
您不應該將消息發送給自己...
執行MX 查找並將消息發送到相應的 SMTP 服務器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.