[英]Deleting Specific Emails in Gmail using Python
當我運行假設只從特定發件人刪除電子郵件的腳本時,我不斷收到此錯誤:
Traceback (most recent call last):
File "/Users/philip/Desktop/Python Projects/email_organizer/eorger.py", line 33, in <module>
deleteEmail(email,pwd,imapserver)
File "/Users/philip/Desktop/Python Projects/email_organizer/eorger.py", line 24, in deleteEmail
typ,data=mail.search(None,'Robinhood@prospectusdocs.com')
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/imaplib.py", line 734, in search
typ, dat = self._simple_command(name, *criteria)
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/imaplib.py", line 1230, in _simple_command
return self._command_complete(name, self._command(name, *args))
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/imaplib.py", line 1055, in _command_complete
raise self.error('%s command error: %s %s' % (name, typ, data))
imaplib.error: SEARCH command error: BAD [b'Could not parse command']
這是我產生此錯誤的代碼:
import imaplib
# your email address
email='test@gmail.com'
# your email password
pwd='************'
# need to input imap server to connect to gmail
imapserver='imap.gmail.com'
def deleteEmail(email,pwd,IMAP):
mail=imaplib.IMAP4_SSL(IMAP) # connect to server
mail.login(email,pwd) # user server to login to gmail account
mail.select('inbox') # selects the 'inbox' to look into
# search for specific criteria in selected inbox
typ,data=mail.search(None,'Robinhood@prospectusdocs.com')
for num in data[0].split():
mail.store(num,'+FLAGS',r'(\Deleted)')
mail.expunge()
mail.close()
mail.logout()
deleteEmail(email,pwd,imapserver)
有什么建議嗎?
它適用於
蟒蛇 v3.4.1
或者您可以訪問無法從收件箱以外的任何文件夾中檢索 gmail 郵件(Python3 問題)
import imaplib
import email
m = imaplib.IMAP4_SSL("imap.gmail.com", 993)
m.login("myemail@gmail.com","mypassword")
m.select('"[Gmail]/All Mail"')
result, data = m.uid('search', None, "ALL") # search all email and return uids
if result == 'OK':
for num in data[0].split():
result, data = m.uid('fetch', num, '(RFC822)')
if result == 'OK':
email_message = email.message_from_bytes(data[0][1]) # raw email text including headers
print('From:' + email_message['From'])
m.close()
m.logout()
from imap_tools import MailBox, A
with MailBox('imap.mail.com').login('test@mail.com', 'pwd', 'INBOX') as mailbox:
# DELETE messages that contains 'Robinhood@mail.xx' in body from INBOX folder
mailbox.delete(mailbox.fetch(A(body='Robinhood@mail.xx')))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.