2011-05-27 57 views
1

有沒有一種方法可以將IMAP文件夾中的消息用Python標記到custome標記中?像湯姆斯郵件,約翰的除草廢話等等?通過python在IMAP中自定義標記消息

+0

[IMAP RFC](http://tools.ietf.org/html/rfc3501#section-2.3.2)指定客戶端可以設置自己的標誌,但不管服務器是否保留他們支持任意標誌。 – sarnold 2011-05-27 23:45:08

+0

看看http://imapclient.freshfoo.com/。我不知道它是否滿足你的需求,因爲我不確定你想要做什麼。它可能有些用處。 – 2011-05-27 23:54:41

回答

4

Cyrus IMAP server支持用戶定義的消息標誌(又名標籤,標籤,關鍵字),您可以使用Alpine mail client進行標籤實驗。在Alpine中選擇(S)etup - >(C)onfig,向下滾動到keywords部分並輸入所需標誌名稱的列表。

要設置來自Python的消息標誌,您可以使用標準的imaplib模塊。下面是一個消息設置標誌的例子:

import imaplib 
im = imaplib.IMAP4(hostname) 
im.login(user, password) 
im.select('INBOX') 

# you can use im.search() to obtain message ids 
msg_ids = '1, 4, 7' 
labels = ['foo', 'bar', 'baz'] 

# add the flags to the message 
im.store(msg_ids, '+FLAGS', '(%s)' % ' '.join(labels)) 

# fetch and print to verify the flags 
print im.fetch(ids, '(FLAGS)') 

im.close() 
im.logout() 

有一點要記住的是,發送到服務器的標誌不包含空格。如果您發送+FLAGS (foo bar)到服務器,這將設置兩個標誌foobar。像Alpine這樣的客戶可以讓你輸入帶空格的標誌,但只會將最後一個非空格部分發送給服務器 - 它把它看作是一個唯一的標識符。如果您指定標記abc 123它將在消息上設置123,並在消息視圖中顯示abc