0
特定の件名のメッセージを移動するためのPythonスクリプトがあります。メッセージは読み取り済みとマークされ、読み取り済みとしてマークされたくありません。スクリプトのどの部分を読んだものとしてマークし、どのように読んだとしてマークしないのですか?Python IMAP4メッセージを既読としてマークしない
また、私はまだ何をしているのか分からないので、冗長なコードやエラーがある場合はお知らせください。本体は、読み取りとしてマークメッセージをフェッチ
import getpass
from Crypto.Hash import MD5
import sys
import imaplib
import email
import re
password = getpass.getpass()
match = "redacted"
username = "redacted"
dest = "000"
pattern_uid = re.compile('\d+ \(UID (?P<uid>\d+)\)')
def md5(message):
hash = MD5.new()
hash.update(message)
return hash.hexdigest()
md5 = md5(password)
if md5 == match:
pass
else:
print "Mismatch"
sys.exit()
M = imaplib.IMAP4_SSL("mail.redacted.com", 993)
M.login(username, password)
M.select()
typ, data = M.search(None, 'ALL')
M.select('Inbox')
msgs = M.search(None, 'ALL')[1]
num_messages = len(msgs[0].split())
num_messages += 1
def parse_uid(data):
match = pattern_uid.match(data)
return match.group('uid')
for i in range(1, num_messages):
try:
typ, msg_data = M.fetch(str(i), '(RFC822)')
except:
pass
for response_part in msg_data:
if isinstance(response_part, tuple):
UID = M.fetch(str(i),'UID')
UID = UID[1]
try:
UID = parse_uid(UID[0])
except:
pass
msg = email.message_from_string(response_part[1])
for header in [ 'subject' ]:
if msg[header] == "Redacted":
result = M.uid('COPY', UID, dest)
if result[0] == 'OK':
mov, data = M.uid('STORE', UID, '+FLAGS', '(\Deleted)')
M.expunge()
M.close()
M.logout()
ここでメッセージ本文を取得していますか? msg_data、(RFC822) ')? –
(RFC822) ')をBODY.PEEK [HEADERS]に変更する必要がありますか? –
UID = parse_uid(UID [0]) –