问题描述
如果符合条件,我正在尝试使用IMAPLIB删除特定的Gmail电子邮件。我可以用它处理一封电子邮件,但我还希望代码在循环中使用该患者的病历ID变量,搜索其中的收件箱,如果发现其中包含该患者ID的其他电子邮件,则将其删除。 / p>
这是我的代码:
import email
import imaplib
import shutil
import os
mail = imaplib.IMAP4_SSL("imap.gmail.com") # Input your IMAP4_SSL domain name
mail.login("username","password") # Email login username,Email login password
mail.select('inbox')
result,data = mail.uid('search',None,"ALL")
inbox_item_list = data[0].split() # Separates out the inbox into a iterable list.
for item in inbox_item_list:
result2,email_data = mail.uid('fetch',item,'RFC822')
raw_email = email_data[0][1].decode("utf-8") # yields UTF-8 iterated email data
email_message = email.message_from_string(raw_email) # converts jumbled output to a readable string (email)
to_ = email_message['To']
from_ = email_message['From']
subject_ = email_message['subject']
date_ = email_message['date']
print(raw_email)
doctor,sep,tail = from_.partition(' <')
doctor_ = doctor
patientNam_ = subject_.replace("[Important","")
patientName_ = patientNam_.replace("]","")
patientID_ = patientName_[-13::]
sourceDir_ = '' + patientName_
destinationDir_ = '' + doctor_
patientFolderExists_ = os.path.isdir(sourceDir_)
print("The patient name is: {}".format(patientName_))
print("Does the PatientFolderExist: {}".format(patientFolderExists_))
print("The patient ID number is: {}".format(patientID_))
if patientFolderExists_ is True:
for part in email_message.walk():
if part.get_content_type() == 'text/plain':
lines = part.get_payload().split("\n")
if ('Important Information' in subject_) & ('Dear' in lines[0]):
shutil.move(sourceDir_,destinationDir_)
mail.uid('STORE','+X-GM-LABELS','\\Trash')
mail.expunge()
print("{} deleted and moved!".format(patientName_))
else:
print("{} did not meet requirements.".format(patientName_))
else:
print("patient folder does not exist,waiting for it..")
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)