繁体   English   中英

如何在 python 中完成 50 个动作(发送电子邮件)后让程序休眠 60 秒

[英]How to tell program to sleep for 60 seconds after 50 actions have been completed (emails sent) in python

我有这个代码,它通过 gmail 从 excel 文件中的电子邮件列表中单独发送电子邮件。 我只想知道如何让机器人在发送 50 封电子邮件后暂停 60 秒,然后在 60 秒结束后继续处理列表。 我只是想确保 gmails 每日限制的安全。

import smtplib
import openpyxl as xl
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
username = str(input('Your Username:' ))
password = str(input('Your Password:' ))
From = username
Subject = 'Free Beats and Samples For You :)'
wb = xl.load_workbook(r'C:\Users\19548\Documents\EMAILS.xlsx')
sheet1 = wb.get_sheet_by_name('EMAIL TEST - Sheet1')
names = []
emails = []
for cell in sheet1['A']:
    emails.append(cell.value)
for cell in sheet1['B']:
    names.append(cell.value)
server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login(username, password)
for i in range(len(emails)):
    msg = MIMEMultipart()
    msg['From'] = username
    msg['To'] = emails[i]
    msg['Subject'] = Subject
    text = '''
{}
'''.format(names[i])
    msg.attach(MIMEText(text, 'plain'))
    message = msg.as_string()
    server.sendmail(username, emails[i], message)
    print('Mail sent to', emails[i])
server.quit()
print('All emails sent successfully!')

您可以使用time.sleep()等待给定的秒数,并且可以使用随着循环的每次迭代而递增的变量来跟踪发送的电子邮件数量。 由于您已经在处理电子邮件本身及其索引,因此您可以使用 Python 的enumerate function 来简化此计数,它为您提供下一个值及其相应的索引:

for index, email in enumerate(emails, start=1):
    msg = <...>
    message = msg.as_string()
    server.sendmail(username, email, message)
    if index % 50 == 0:
        time.sleep(60)
if(your_value%50==0):
    time.sleep(60)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM