2011-08-10 9 views
0

私は、Python smtpdモジュールを使用して簡単なsmtpサーバーを作ろうとしています。私は電子メールを受け取って印刷することができます。こんにちは世界のメッセージで私に電子メールを送った人に電子メールを送ろうとすると、無限ループに終わります。自分のサーバーを使って電子メールを送信しようとしましたが、受信した別の電子メールとして解釈します。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

あなたは本当に何かを変更する必要はありません。 MXルックアップを実行して、代わりにそのサーバーに接続するには、DNSライブラリを使用するだけです。 –

関連する問題