2

ここで Pyramid を初めて使用し、自分自身に電子メールを送信するためにpyramid_mailer を設定しようとしています:

私はdevelopment.iniに持っています:

mail.host = smtp.gmail.com
mail.username = EMAIL@gmail.com
mail.password = PASSWORD
mail.port = 587
mail.ssl = True
[handlers]
keys = console

私のプロジェクト/ __init__.pyで:

config.include('pyramid_mailer')

私のプロジェクト/views.pyで

from pyramid_mailer.mailer import Mailer
from pyramid_mailer import get_mailer
from pyramid_mailer.message import Message
@view_config(renderer="templates/site_view.pt")
def site_view(self):

...

    config.registry['mailer'] = Mailer.from_settings(settings)
    mailer = request.registry['mailer']
    message = Message(subject="It works!",
                      sender="EMAIL@gmail.cm",
                      recipients=["EMAIL@gmail.com"],
                      body="Hey there!")

    mailer.send(message)

ここで非常に基本的な何かが欠けていますか?

4

2 に答える 2

5

実際、あなたは根本的な何かを見逃しています!:-)

.send()メッセージをトランザクションマネージャーに追加する遅延送信です。を使用していない場合pyramid_tm、リクエストの最後にメールは送信されません。を呼び出した後にコードで例外が発生した場合、メールは送信send()されないため、トランザクションのメール送信は便利です。

とにかく、コードを送信する方法は.send_immediately().

于 2012-06-20T20:34:15.933 に答える
2

あなたはそれをチェックして使用したいかもしれません:

mail.tls = True

pyramid_mailer と gmail でメールを送信できません

また、使用できます.send_immediately(message, fail_silently=False)

あなたはそのようなものを持っているでしょう:

mail.host = smtp.gmail.com
mail.username = EMAIL@gmail.com
mail.password = PASSWORD
mail.port = 587
mail.tls = True

あなたのセットアップで:

config.include('pyramid_mailer')

その後

mailer = get_mailer(request)
message = Message(subject="It works!",
                  sender="EMAIL@gmail.cm",
                  recipients=["EMAIL@gmail.com"],
                  body="Hey there!")

mailer.send_immediately(message, fail_silently=False)

それでも何も機能しない場合は、次を使用してデバッグを有効にすることができます

mail.debug = 真

smtp セッションを stdout にダンプする必要があります。何かがうまくいかなかった場合。その理由を正確に知ることができます。すべてが順調であれば。

于 2012-06-23T13:17:14.530 に答える