Python使用imaplib模块search条件传入时间和结果时间不匹配
问题描述
在python中用impalib的search查询某些邮件如: ON 09-Oct-2023 结果返回的邮件msg.get('date') = 'Tue, 10 Oct 2023 00:25:08 +0800 (CST)'
我看RFC 3501 6.4.4上说这个search是忽略时区的,那我该如何获取msg.date = '09-Oct-2023'的数据呢
具体代码
def f_getmsg(search_dt :str):
imap_address = "outlook.office365.com"
imap_host = 993
email_name = "1234567879@Outlook.com"
email_pass = 12345678'
V_DIR = 'Bill'
msg_list = []
conn = imaplib.IMAP4_SSL(imap_address, imap_host)
conn.login(email_name, email_pass)
conn.select(V_DIR, readonly=True)
typ, data = conn.search(None, search_dt)
messages = data[0].split()
for msg_id in messages:
typ, data = conn.fetch(msg_id, '(RFC822)')
msg = email.message_from_string(data[0][1].decode('utf-8'))
print ('search_dt:',search_dt,'||msg.get:',msg.get('date'))
for part in msg.walk():
if not part.is_multipart():
msg_list.append(part.get_payload(decode=True).decode('utf8'))
conn.logout()
v_ldir = os.path.dirname(os.path.abspath(__file__))
v_pathtmp = v_ldir + '\\tmp_bill_info.csv'
with open(v_pathtmp,encoding='utf-8',mode='a+') as f:
f.truncate(0)
for i in msg_list:
with open(v_pathtmp, encoding='utf-8', mode='a') as f:
f.writelines(i + chr(10))
if __name__ == "__main__":
f = f_getmsg('SENTON 09-Oct-2023')
#-----------------------------------------------------------
search_dt: SENTON 09-Oct-2023 ||msg.get: Mon, 9 Oct 2023 08:42:01 +0800 (CST)
search_dt: SENTON 09-Oct-2023 ||msg.get: Mon, 9 Oct 2023 12:22:09 +0800 (CST)
search_dt: SENTON 09-Oct-2023 ||msg.get: Mon, 9 Oct 2023 18:19:42 +0800 (CST)
search_dt: SENTON 09-Oct-2023 ||msg.get: Mon, 9 Oct 2023 20:30:23 +0800 (CST)
search_dt: SENTON 09-Oct-2023 ||msg.get: Mon, 9 Oct 2023 20:56:14 +0800 (CST)
search_dt: SENTON 09-Oct-2023 ||msg.get: Mon, 9 Oct 2023 22:12:34 +0800 (CST)
search_dt: SENTON 09-Oct-2023 ||msg.get: Tue, 10 Oct 2023 00:25:08 +0800 (CST)
search_dt: SENTON 09-Oct-2023 ||msg.get: Tue, 10 Oct 2023 00:40:17 +0800 (CST)