如何记录电子邮件的内容,以便不再发送重复的电子邮件?



我使用此代码来收集赔率数据。每当博彩公司之间的赔率出现差异时,它都会给我发一封电子邮件。我每天通过终端手动运行代码多次。当我一天多次运行代码时,我会收到许多重复的电子邮件,这些邮件都是相同的赔率差异。除了显示电子邮件发送时间的主题行外,电子邮件的内容完全相同。有没有记录电子邮件的内容,这样代码就可以防止发送相同的电子邮件?我想防止电子邮件被发送,而不仅仅是在通过Gmail发送后将其过滤掉。代码还必须每天刷新,以便清空内容日志。很抱歉问了这么复杂的问题。

您可以在每次发送电子邮件时以附加模式将数据记录到CSV文件中。这可以使用Python的[CSV模块][1]来完成。如果CSV文件存在,请读取它,并确保值尚未写入该文件。用当前日期命名文件。通过这种方式,您可以根据需要保留或删除日志。我假设您要检查的变量是dfm2dfm3,但您可以替换为任何其他需要检查的变量。从这个链接中阅读是一个好主意,以确保它设置为您想要的工作方式。还有其他日志记录选项,但使用csv文件是一个简单的解决方案。

from datetime import datetime
from os import path
import csv
# your code prior to below line here
dfmerge5 = dfmerge1.loc[dfmerge1['ComparedOdds'] == 1, 'AvgOdds'].values
csv_file = f'<path to log file>/odds-log-{datetime.today().strftime("%d-%m")}.csv')
for dfm2, dfm3, dfm4, dfm5 in zip(dfmerge2, dfmerge3, dfmerge4, dfmerge5):
mail_sent = False
if path.isfile(csv_file):
with open(csv_file, 'r') as r_file:
c_reader = csv.reader(r_file)
for row in c_reader:
if dfm2 in row and dfm3 in row:
mail_sent = True
if not mail_sent:
with open(csv_file, 'a') as w_file:
c_writer = csv.writer(w_file)
c_writer.writerow([dfm2, dfm3])
dt = datetime.now()
subject = f'Overlay - {dt}'
body = f'Hi Harrison,nnYou have one overlay:nnFor {dfm2} in {dfm3}, Bet365 are displaying odds of ${dfm4}, where as the average odds are          ${dfm5}.nnBest of luck.'
message = f'Subject: {subject}nn{body}'
mail = smtplib.SMTP('smtp.gmail.com', 587)
mail.ehlo()
mail.starttls()
mail.login
mail.sendmail(message)
mail.close()
[1]: https://docs.python.org/3/library/csv.html#csv.writer

最新更新