2011-08-10 65 views
0

我正在嘗試使用Python smtpd模塊製作一個簡單的smtp服務器。我可以收到一封電子郵件並將其打印出來。我嘗試發送一封電子郵件給那些給我發送帶有hello world消息的電子郵件的人,並最終導致無限循環。我嘗試使用自己的服務器發送電子郵件,並將其解釋爲接收到的另一封電子郵件。使用Python smtpd模塊發送/接收電子郵件

我該如何使用它來發送和接收電子郵件?

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', '[email protected]')) 
      msg['Subject'] = '' 

      print 'Connecting to mail server' 
      server = smtplib.SMTP() 
      server.set_debuglevel(1) 
      server.connect() 
      print 'Attempting to send message' 
      try: 
       server.sendmail('[email protected]', [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:不使用這個作爲郵件服務器。只想發送/接收簡單的電子郵件以獲得簡單的服務。

回答

1

應該將消息發送到自己 ...

執行MX lookup,併發送郵件到適當的SMTP服務器。

+0

如何做到這一點的任何建議?我從來沒有嘗試過修改過一個smtp守護進程。 –

+0

你......並不需要修改任何東西。您只需使用DNS庫來執行MX查找,然後連接到該服務器。 –

相關問題