[ad_1]
こんにちは。 特定の件名のメールを削除したい Python コードがありますが、エラーが発生します。どうすればよいですか?
エラー:
/usr/lib/python3/dist-packages/requests/__init__.py:89: RequestsDependencyWarning: urllib3 (1.26.12) or chardet (3.0.4) doesn't match a supported version! warnings.warn("urllib3 ({}) or chardet ({}) doesn't match a supported " Traceback (most recent call last): File "__carClicker__.py", line 753, in <module> read_TXT_FILE_from_gmail() File "__carClicker__.py", line 214, in read_TXT_FILE_from_gmail mail.store(mail_ids , '+FLAGS', '(\\Trash)') File "/usr/lib/python3.8/imaplib.py", line 842, in store typ, dat = self._simple_command('STORE', message_set, command, flags) File "/usr/lib/python3.8/imaplib.py", line 1205, in _simple_command return self._command_complete(name, self._command(name, *args)) File "/usr/lib/python3.8/imaplib.py", line 963, in _command data = data + b' ' + arg TypeError: can't concat list to bytes
コードは次のとおりです。
私が試したこと:
パイソン
global FROM_EMAIL , FROM_PWD mail = imaplib.IMAP4_SSL(SMTP_SERVER) mail.login(FROM_EMAIL , FROM_PWD) mail.select('inbox') data = mail.search(None, 'ALL') mail_ids = data[1] id_list = mail_ids[0].split() latest_email_id = int(id_list[-1]) check_last_N_emails = 11 for e in range(latest_email_id , latest_email_id - check_last_N_emails , -1): data = mail.fetch(str(e), '(RFC822)' ) for response_part in data: arr = response_part[0] if isinstance(arr, tuple): msg = email.message_from_string(str(arr[1],'utf-8')) email_subject = msg['subject'] email_from = msg['from'] for part in msg.walk(): filename__ = part.get_filename() if filename__: open(PATH_NAME + str(filename__) , "wb").write(part.get_payload(decode=True)) if(not "20 errors occured" in email_subject): now = datetime.datetime.now() if(email_subject == "update" or email_subject == "Update"): mail.store(mail_ids , '+FLAGS', '(\\Trash)')
これは関数です。他のことにも使用します。
ここでの間違いは最後のコマンドだと思います。
ご協力いただきありがとうございます。
解決策 2
[Moving the comment to answer with a reference]
個々のメールではなく、store コマンドでリストを渡しているようです。 元のコードの最後の行ではなく、これを試す必要があります。
パイソン
for num in mail_ids.split(): mail.store(num, '+FLAGS', '\\Deleted')
参照: Python でメールを削除する方法 – Python コード[^]
ところで、リチャードが指摘したように、依存ライブラリにもバージョンの問題があり、修正することができますが、現在警告が発生しているようであり、エラーの原因ではありません。
[ad_2]
Source link
コメント