簡體   English   中英

使用 Python smtpd 模塊發送/接收電子郵件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM