2017-08-15 5 views
0

localhost:1025からメッセージを送信しようとしています。私はこのコマンドを使用してsmtpデバッグサーバを実行していますpython -m smtpd -n localhost:1025。ここでpython:localhostからのメール送信が期待通りに機能しませんでした

がメールを送信するために使用されるコードです:

msg = mailer.Message(From='[email protected]'+company['host'], 
         To=req['mail'], 
         Subject='E-mail confirmation', 
Body=Template(open('./confirmation.html').read()).render(company=company, account=account, accode=accode)) 
mailer.Mailer(company['host'], port=1025).send(msg) 

REQ [「メール」]私は私の電子メールの受信トレイや迷惑メールフォルダを確認し、私の電子メールアドレスを含むされ、私はいずれかを見つけることができませんでしたメッセージ - この問題の原因は何ですか?

答えて

1

smtpd/mailerを使用するのは間違いだと思います。

  1. テスト済みEximの使用:

    nano testexim

    From: "Exim" <[email protected]> 
    To: MYFULLNAME MYEMAILADDRESS 
    Reply-To: [email protected] 
    Subject: Hello exim! 
    Content-Type: text/plain; charset=utf-8 
    
    this is exim test message 
    
    EOF 
    

    sendmail MYEMAILADDRESS < testexim

    結果:メッセージが正常のeximを介して送信されてしまった(sendmailコマンド)

  2. Tested smtpd using:

    私は、このアプローチを使用して問題を解決しました

    python

    import smtplib 
    Import email.utils 
    from email.mime.text import MIMEText 
    
    # Create the message 
    msg = MIMEText('Hello SMTPD!') 
    msg['To'] = email.utils.formataddr((MYFULLNAME, 
                MYEMAILADDRESS)) 
    msg['From'] = email.utils.formataddr(('SMTPD', 
                '[email protected]')) 
    msg['Subject'] = 'SMTPD test message' 
    
    server = smtplib.SMTP('localhost', 1025) 
    server.set_debuglevel(True) # show communication with the server 
    try: 
        server.sendmail('[email protected]', 
            [MYEMAILADDRESSS], 
            msg.as_string()) 
    finally: 
        server.quit() 
    

    結果:smtpdの経由でメッセージを送信するには

  3. Tried a method not based on smtpd:

    python

    from email.mime.text import MIMEText 
    from subprocess import Popen, PIPE 
    
    msg = MIMEText("Hello from exim") 
    msg["From"] = "[email protected]" 
    msg["To"] = MYEMAILADDRESS 
    msg["Subject"] = "Python sendmail test" 
    p = Popen(["/usr/sbin/sendmail", "-t", "-oi"], stdin=PIPE) 
    p.communicate(msg.as_string()) 
    

    RESULT失敗しました:sendmailのプロセスを作成し、プログラムで、私はあなたに感謝、ことを逃した仕事

2

明らかに、in the documentationは、デバッグサーバーは電子メールメッセージを配信しようとしません。これは、メールを実際に送信することなく、電子メールの内容のテストと検証を可能にするためです。

+0

をしました回答。しかし、 'python -m smtpd -n localhost:1025'を使ってサーバを実行しても、メッセージは送られません。あなたは何か考えていますか? – Kais

+0

'PureServer'クラスはどこに配送するのかを伝える必要があります。 'python -m smtpd --help'から、デフォルトではローカルホスト上のポート25が試行された配送ポイントとして使用されるようです。ローカルのSMTPサーバーが動作していますか? – holdenweb

+0

私はすでにeximをインストールしています。しかし、 'python -m smtpd -n -c PureServer localhost:25'を実行した後、「AttributeError: 'module'オブジェクトに 'PureServer'属性がありません。 – Kais

関連する問題