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:メールサーバーとしては使用しません。簡単なサービスのために単純な電子メールを送受信したいだけです。
これを行う方法の提案はありますか?以前はsmtpデーモンを変更しようとしなかった。 –
あなたは本当に何かを変更する必要はありません。 MXルックアップを実行して、代わりにそのサーバーに接続するには、DNSライブラリを使用するだけです。 –