1

Python Flask アプリをセットアップし、CherryPy (デジタル オーシャン、OS: Debian GNU/Linux 7.0 でホスト) で実行しています。Flask Sendmailを使用してメールを送信し、アプリを実行してメールを送信しようとしましたが、エラーは表示されず、適切に実行されます。しかし、受信した電子メールはありません (スパムと他のすべてのフォルダーをチェックしました)。

何か助けはありますか?以下のコードを追加しました。

Flask アプリの構成:

app.config.update(
    DEBUG=True,
    MAIL_DEBUG=True,
    MAIL_FAIL_SILENTLY=False,
    MAIL_SUPPRESS_SEND=False,
    DEFAULT_MAIL_SENDER='Tester',
    TESTING=False
)

メール送信部:

mail_handler = Mail()
mail_handler.init_app(app)

try:
    msg = Message("Hello World",
                  recipients='jane@doe.com')
    msg.html += '<b>HTML content for email</b>'

    if mail_handler!=None:
        mail_handler.send(msg)
        print "email sent"

    return {"status": "success", "message": "Please check your email"}

except Exception as e:
    return {"status": "failed", "message": "Failed"}
4

1 に答える 1

1

最近、私もこのことで一晩中過ごしました。私が最終的に得た動作中のメールモジュールは以下の通りです:

from flask_mail import Mail, Message

mail = None

def configure_mail(app):
    # EMAIL SETTINGS
    global mail
    app.config.update(
        MAIL_SERVER = 'smtp.gmail.com',
        MAIL_PORT = 465,
        MAIL_USE_SSL = True,
        MAIL_USERNAME = 'blabla@gmail.com',
        MAIL_PASSWORD = 'mega_password',
        DEFAULT_MAIL_SENDER = 'blabla@gmail.com',
        SECRET_KEY = 'abcdefd_thats_a_charming_secret_key',
    )
    mail=Mail(app)

def send_email(subject, sender, recipients, text_body, html_body):
    msg = Message(subject, sender = sender, recipients = recipients)
    msg.body = text_body
    msg.html = html_body
    mail.send(msg)

次に、実装されたメソッドを適切な場所から呼び出すだけです。

from emails import send_email # 'emails' is a name of the module provided above
send_email('messageTopic', 'blabla@gmail.com', ['blabla@gmail.com'], 'composedMsg', None)

また、メールを送信する前に設定コードを呼び出すことを忘れないでください。例えば:

from emails import configure_mail # 'emails' is a name of the module provided above
app = Flask(__name__)
app.debug = True
configure_mail(app)

お役に立てれば。

于 2014-01-16T10:19:02.457 に答える