2011-07-23 29 views
3

私のgmail smtpとpyramid_mailerパッケージを使用してピラミッドWebサイトから電子メールを送信しようとしています。まず、誰かが電子メールソリューションに関する別の提案をしている場合は、私に教えてください!pyramid_mailerとgmailで電子メールを送信できません

私は私のdev.iniに以下を追加:

mail.host = smtp.gmail.com 
mail.username = [email protected] 
mail.password = password 
mail.port = 465 
mail.ssl = True 

そして、私はそうのようなメッセージを送信しています:

config.registry['mailer'] = Mailer.from_settings(settings) 

以降...

mailer = request.registry['mailer'] 
message = Message(subject="hello world", 
         sender="[email protected]", 
         recipients=["[email protected]"], 
         body="hello!") 
mailer.send(message) 

残念ながら、次の例外があります。

SMTPServerDisconnected: please run connect() first 

私は間違っていますか?

ありがとうございます!

+0

ない答えていますが、別のSMTPサーバーでそれを試すことができますか? http://groups.google.com/group/comp.lang.python/browse_thread/thread/4791505038b2fca5 –

答えて

4

以下の設定が私の仕事:コードを送信

# pyramid_mailer 
mail.host = smtp.gmail.com 
mail.port = 587 
mail.username = [email protected] 
mail.password = mypassword 
mail.tls = True 

あなたのメールは私と同じのようですので、それが動作するはずです。

私はSSLを試していませんが、すべての種類のbugaboosがそちらに存在する可能性があると仮定しています。

+0

Gmailでは、From:ヘッダーが変更されています。 –

+0

Matt、これはサーバー情報で '[server:main]'の 'development.ini'設定ファイルに入れましたか?あるいは '[app:main]'のようなもの? pyramid docs:http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/project.html#development-iniを参照してください。 – thesayhey

2

電子メールは、トランザクションがコミットされるまで実際には送信されません。

あなたは、トランザクションをコミットする必要があります。

import transaction 
transaction.commit() 

またはsend_immediately使用:

mailer.send_immediately(message, fail_silently=False) 
関連する問題