我有一个程序需要读取电子邮件并验证它们是否来自本月,然后再继续。
我通过以下代码获取电子邮件信息
import email
import smtplib
import imaplib
mail = imaplib.IMAP4_SSL('redacted', 993)
mail.login(username, bytes(password).decode('utf-8')) #password is bytes that have been decrypted
msg_data2 = [] #My template allows for multiple email data to be appended
mailbox_data = mail.list()
mail.select('INBOX', readonly=True)
result, msg_ids = mail.search(None, f'(SEARCH CRITERIA REDACTED)')
lister = msg_ids[0].split()
most_recent = lister[-1]
result2, msg_data = mail.fetch(most_recent, '(RFC822)')
msg_data2.append(msg_data)
raw = email.message_from_bytes(msg_data[0][1])
Run Code Online (Sandbox Code Playgroud)
从这里,我可以从我的电子邮件中获取符合搜索条件的附件,以前,供应商会根据其工作运行的月份正确命名文件。现在有些不是,所以我试图检查电子邮件发送或接收的日期。
您可以从电子邮件的“日期”标题中获取发送日期。
from email import utils
...
raw = email.message_from_bytes(msg_data[0][1])
datestring = raw['date']
print(datestring)
# Convert to datetime object
datetime_obj = utils.parsedate_to_datetime(datestring)
print(repr(datetime_obj))
Run Code Online (Sandbox Code Playgroud)