私のコードを見てGmailの...私が取得Pythonは、このような
import imaplib
import email
obj = imaplib.IMAP4_SSL('imap.gmail.com','993')
obj.login('user','pass')
obj.select('inbox')
delete = []
for i in range(1, 10):
typ, msg_data = obj.fetch(str(i), '(RFC822)')
print i
x = i
for response_part in msg_data:
if isinstance(response_part, tuple):
msg = email.message_from_string(response_part[1])
for header in [ 'subject', 'to', 'from', 'Received' ]:
print '%-8s: %s' % (header.upper(), msg[header])
if header == 'from' and '<sender's email address>' in msg[header]:
delete.append(x)
string = str(delete[0])
for xx in delete:
if xx != delete[0]:
print xx
string = string + ', '+ str(xx)
print string
obj.select('inbox')
obj.uid('STORE', string , '+FLAGS', '(\Deleted)')
obj.expunge()
obj.close()
obj.logout()
エラーは、私がimaplibを使用して一度に複数のメールを削除する方法を探しています
Traceback (most recent call last):
File "del_email.py", line 31, in <module>
obj.uid('STORE', string , '+FLAGS', '(\Deleted)')
File "C:\Tools\Python(x86)\Python27\lib\imaplib.py", line 773, in uid
typ, dat = self._simple_command(name, command, *args)
File "C:\Tools\Python(x86)\Python27\lib\imaplib.py", line 1088, in _simple_command
return self._command_complete(name, self._command(name, *args))
File "C:\Tools\Python(x86)\Python27\lib\imaplib.py", line 918, in _command_complete
raise self.error('%s command error: %s %s' % (name, typ, data))
imaplib.error: UID command error: BAD ['Could not parse command']
ですまたは他のモジュール。私は一番簡単な例を探しています。この例は、ここの最後の答えのUsing python imaplib to "delete" an email from Gmail?のリンクにあります。私は正しく働いていない。しかし、私はスクリプトが実行されるたびに1つの電子メールを削除するように働く第1の例を得ることができます。私はむしろスクリプトを数千回実行するよりも倍数でそれをやってみてください。私の主な目標は、imaplibを介して複数の電子メールを削除することです。回避策や他の作業モジュールや例が理解できます。
「文字列」は何を印刷しますか? – Max
コンマの後に空白があるようです。 UIDリストにはスペースが含まれていない可能性があります。 – Max
文字列の文字列を '1,2,3'などの文字列で出力します。また、スペースを取り出して '1,2,3'と同じ問題が発生しました。 – killer