1

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

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 发送大量电子邮件不是一个好的选择,您还有什么推荐的?谢谢卡尔

4

1 回答 1

2

谷歌认为它是垃圾邮件而放弃了连接。在成功发送每条消息后使用等待时间,例如:

time.sleep(80)

这将等待 80 秒。

于 2015-12-14T02:49:55.840 回答