【问题标题】:Flask sendmail not showing any errors, but no email received烧瓶 sendmail 没有显示任何错误,但没有收到电子邮件
【发布时间】:2014-01-16 07:12:01
【问题描述】:

我有一个 Python Flask 应用程序设置并在 CherryPy 上运行(托管在 Digital Ocean,操作系统: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"}

【问题讨论】:

    标签: python flask flask-extensions


    【解决方案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)
    

    希望这会有所帮助。

    【讨论】:

    • 谢谢,但我不是在寻找 SMTP 解决方案。我只需要发送电子邮件,不会收到任何邮件。
    • 嗯,不使用任何邮件服务器就无法发送电子邮件。为了使用它(在我的例子中是gmail服务器),我使用这个协议。我的代码也用于只发送电子邮件,不接收。
    • (对已删除评论的回复)然后据我了解,您希望您的客户端成为唯一的端点(邮件服务器本身)。我不确定这是否可能......例如您希望在收件人邮箱的“发件人”字段中看到什么?通常是 noreply@blabla.com。但是,如果您正在使用自己的邮件服务器 (en.wikipedia.org/wiki/Message_transfer_agent),那我当然帮不上忙。如果我在某个地方错了,请纠正我。祝你好运:)
    • 我花了 4 个小时才弄清楚这个问题...感谢您的回复
    • @user3152311 很高兴即使在 2019 年底也有帮助!
    猜你喜欢
    • 2017-01-29
    • 1970-01-01
    • 2020-06-15
    • 1970-01-01
    • 1970-01-01
    • 2018-06-01
    • 2020-01-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多