烧瓶邮件错误“SMTPServerDisconnected('请先运行connect()')”

时间:2015-12-14 02:44:41

标签: python flask-mail

我正在尝试使用烧瓶邮件发送批量电子邮件...这是我的代码

users = models.User.query.filter_by(query_email_notification=1).all()
    if users:
        # Bulk emails... keep connection open
        with app.app_context():
            with mail.connect() as conn:
                for user in users:
                    subject = "subject"
                    message = "message"
                    msg = Message(recipients=[user.email],
                                  body=message,
                                  subject=subject,
                                  sender='myemail@gmail.com')

                    conn.send(msg)

我的烧瓶邮件设置如下

from flask_mail import Message
app.config.update(dict(
    DEBUG = True,
    MAIL_SERVER = 'smtp.gmail.com',
    MAIL_PORT = 587,
    MAIL_USE_TLS = True,
    MAIL_USE_SSL = False,
    MAIL_USERNAME = 'myemail@gmail.com',
    MAIL_PASSWORD = 'password',
))

mail.init_app(app)

这适用于一定数量的电子邮件,但在收到大约100封电子邮件后

    raise SMTPServerDisconnected('please run connect() first')
smtplib.SMTPServerDisconnected: please run connect() first

我注意到gmail将每天的电子邮件数限制为2000,但我确保没有达到这个限制。 任何想法我还能检查什么?

MAIL_MAX_EMAILS配置变量是解决方案吗?它会在发送一定数量的电子邮件后重新连接......? 我正在寻找一个可靠的解决方案。因此,如果通过Gmail发送许多电子邮件不是一个好的选择,你还会推荐什么? 谢谢 卡尔

1 个答案:

答案 0 :(得分:2)

Google认为这是一种垃圾邮件。在每条消息成功发送后使用等待时间,例如:

time.sleep(80)

这将等待80秒。