Как заставить программу спать на 60 секунд после выполнения 50 действий (отправленных писем) в python - PullRequest
1 голос
/ 19 июня 2020

У меня есть этот код, который отправляет электронные письма индивидуально через Gmail из списка писем в файле Excel. Я просто хочу знать, как заставить бота приостанавливаться на 60 секунд после того, как он отправил 50 писем, а затем продолжить работу со списком после того, как 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!')

Ответы [ 2 ]

0 голосов
/ 19 июня 2020
if(your_value%50==0):
    time.sleep(60)
0 голосов
/ 19 июня 2020

Вы можете использовать time.sleep(), чтобы ждать заданное количество секунд, и вы можете отслеживать количество отправленных писем, используя переменную, которая увеличивается с каждой итерацией l oop. Поскольку вы уже работаете как с самими электронными письмами, так и с их индексами, вы можете упростить этот подсчет, используя функцию Python * enumerate, которая дает вам как следующее значение, так и соответствующий ему индекс:

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...