【问题标题】:Flask Mail, Duplicate mails being sentFlask Mail,正在发送重复的邮件
【发布时间】:2020-05-12 17:17:05
【问题描述】:

我正在使用 Python 和 Flask Mail。在用户通过单击之前作为电子邮件发送给用户以确认其帐户的链接来确认其帐户后,我正在尝试发送欢迎电子邮件。通过在数据库中将已确认条目的值更改为 true 来确认他的帐户后,我发送了欢迎电子邮件。但它发送了 5 封重复的电子邮件,而不是 1 封。

我使用了下面的代码-

class AccountConfirmation(Resource):
    @jwt_required    
    def post(self):
        current_user_id = get_jwt_identity()
        user = User.query.get(current_user_id)
        user.confirmed = True
        db.session.commit()
        send_welcome_email(user)
        return {'msg': 'Account confirmed successfully. You can now login to your account'}, 200 

def send_welcome_email(user):
    subject = '...'
    body = '...'
    sender = Config.ADMINS[0]
    recipients = [user.email_id]
    send_email(subject, body, sender, recipients)

from flask_mail import Message
def send_email(subject, body, sender, recipients):
    msg = Message(subject = subject, body = body, sender=sender, recipients=recipients)
    mail.send(msg)

【问题讨论】:

    标签: python flask sqlalchemy flask-sqlalchemy flask-mail


    【解决方案1】:

    我没有发现代码有任何问题。除非有多个发送邮件的请求。要克服它,您可以尝试发送异步电子邮件。请检查这段代码,不要忘记检查link 以获得更好的解释。

    from threading import Thread
    # ...
    
    def send_async_email(app, msg):
        with app.app_context():
            mail.send(msg)
    
    
    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
        Thread(target=send_async_email, args=(app, msg)).start()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-12
      • 2022-11-13
      • 2014-03-24
      • 1970-01-01
      • 1970-01-01
      • 2020-08-27
      相关资源
      最近更新 更多