2015-12-14 50 views
0

我試圖發送大量電子郵件,其中包含燒瓶郵件...這裏是我的代碼燒瓶郵件錯誤「SMTPServerDisconnected(‘請運行連接()第一’)」

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='[email protected]') 

        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 = '[email protected]', 
    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發送很多郵件不是一個好的選擇,你還會推薦什麼? 謝謝 carl

回答

1

Google認爲這是垃圾郵件,使用等待時間後,每個消息發送成功,如:

time.sleep(80) 

這將等待80秒。

+0

嗨大...是否有另一種方法來做到這一點? 80後,每封郵件等待100封電子郵件的速度都很慢...有沒有辦法告訴gmail它不是垃圾郵件? 80年代從哪裏來?它會與1s一起工作嗎? – carl

+0

從80開始,如果工作,將其降低10 10,直到找到正確的延遲 –