Неоднократно отправлять электронную почту с Python на временной интервал - PullRequest
0 голосов
/ 13 января 2019

Я хочу сделать скрипт на python, который отправляет электронное письмо с вложением (txt) каждые 30 минут. Вот мой код для отправки электронного письма с приложением. Работает без проблем. Однако мне нужна помощь, чтобы выяснить, как отправить это по расписанию.

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders
import os.path

email = 'myaddress@gmail.com'
password = 'password'
send_to_email = 'sentoaddreess@gmail.com'
subject = 'This is the subject'
message = 'This is my message'
file_location = 'C:\\Users\\You\\Desktop\\attach.txt'

msg = MIMEMultipart()
msg['From'] = email
msg['To'] = send_to_email
msg['Subject'] = subject

msg.attach(MIMEText(message, 'plain'))

filename = os.path.basename(file_location)
attachment = open(file_location, "rb")
part = MIMEBase('application', 'octet-stream')
part.set_payload((attachment).read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', "attachment; filename= %s" % filename)

msg.attach(part)

server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login(email, password)
text = msg.as_string()
server.sendmail(email, send_to_email, text)
server.quit()

1 Ответ

0 голосов
/ 13 января 2019

Два варианта для вас

  1. Вы можете посмотреть расписание своего скрипта Python для запуска через определенный промежуток времени. Это означает, что при каждом запуске сценария будет отправлено одно электронное письмо, и вы остановите автоматизированную задачу, а не остановите сценарий, если хотите, чтобы электронные письма прекратились. Если вы работаете в ОС Windows, у них есть встроенное приложение под названием Task Scheduler , чтобы управлять этим для вас.
  2. Второй вариант - использовать функцию time.sleep (). Этот метод будет означать, что скрипт будет продолжать запускаться и снимать электронную почту каждые 30 минут. Сценарий должен быть остановлен, если вы хотите, чтобы письма прекратились.

    import time
    while True:
        {insert your email send code here}
        time.sleep(60*30) # this is in seconds, so 60 seconds x 30 mins
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...