私は imaplib を使用しており、gmail アカウントからのメッセージを解析しようとしています。私のコードは何ヶ月も動いていましたが、突然、惨めなほど失敗しました。これが何に起因するのかわかりません。
以下は約 1/3 の時間で動作します。「動作する」とは、メールを受信したときに「新しいメッセージがない」以外の印刷に成功することを意味します。これを試みるためのより堅牢な方法の提案はありますか? または、これをより確実に機能させるためにgmailアカウントを構成するための提案はありますか?
また、これをコーディングした方法が良い習慣のように見えるかどうかにも一般的に興味があります。助けてくれてありがとう...
def check_email(interval):
while True:
server.select('INBOX')
status, ids = server.search(None, 'UnSeen')
if not ids or ids[0] is '':
print 'no new messages'
else:
print 'found a message; attempting to parse...'
latest_id = ids[0]
status, msg_data = server.fetch(latest_id, '(UID BODY[TEXT])')
raw_data = msg_data[0][1]
char_array = list(raw_data)
print 'message result: ', char_array
time.sleep(interval)
EDIT1:次のエラーが表示されます:
「imaplib.error: FETCH コマンド エラー: BAD ['コマンドを解析できませんでした']」
私がこれを何に帰することができるか知っている人はいますか?それは明らかにラインの結果です
status, msg_data = server.fetch(latest_id, '(UID BODY[TEXT])')
EDIT2: gmail アカウントにログインし、[詳細] タブをクリックしてから、[すべて既読にする] をクリックすると、突然コードが期待どおりに機能することがわかりました。すべてのメッセージを imaplib でリモートで既読としてマークする方法はありますか??