Добавить ярлык в Gmail с помощью IMAP, Python

#python #gmail #imap

#python #gmail #imap

Вопрос:

Я пытаюсь добавить ярлык к подмножеству сообщений электронной почты. Это действительно глючит. Он работает, затем не работает, затем добавляется только к первому письму…

 mail = imaplib.IMAP4_SSL('imap.gmail.com')
mail.login('myaccountxyz@gmail.com', mypassword)

mail.select("my-folder") # finds emails with this label
result, data = mail.uid('search', None, 'all')

label_to_add = "label-to-add" # previously created in Gmail

for email_uid in data[0].split():
    result, data_single = mail.uid('fetch', email_uid, '(RFC822)')
    raw_email = data_single[0][1]
    email_message = email.message_from_string(raw_email)
    sender = email_message['From']
    
    mail.store(email_uid, ' X-GM-LABELS', '(' label_to_add ')')
    # also tried without the parenthesis
    mail.store(email_uid, ' X-GM-LABELS', label_to_add)
 

Ответ №1:

Если вы используете mail.uid('search'... , вам нужно использовать mail.uid('store', ... иначе, вы смешиваете UID и MSN (порядковый номер сообщения), которые не соответствуют, поэтому иногда вам везет, и ваши UID оказываются достаточно низкими, чтобы попасть в MSN.

Комментарии:

1. Спасибо! Полными параметрами являются mail.uid(‘store’, email_uid, ‘ X-GM-LABELS’, ‘(‘ label_to_add ‘)’)