2010-03-16 90 views
4

通過IMAP將標籤附加到Gmail中的消息 - 從技術上講它們是什麼。我的意思是通過imap連接,我可以訪問Gmail郵箱並瀏覽電子郵件,但假設我想創建一個標籤並將其附加到電子郵件中,因爲我使用代碼循環訪問它們 - 我如何在代碼中執行此操作?我使用PHP和Zend Framework。使用關於Gmail標籤的代碼

編輯===

感謝您的答覆,以便它現在很清楚,標籤就像在這方面處理的文件夾但是我已經試過Zend_Mail_Storage_Imap類的功能與有趣的結果。如果我嘗試使用Zend_Mail_Storage_Imap:moveMessage函數 - 它會從任何地方刪除消息,並從字面上將標籤附加到該消息,這意味着如果我希望將標籤foo附加到我的消息中,它會將它從收件箱中刪除並附加標籤foo。但是,如果我使用Zend_Mail_Storage_Imap :: copyMessage這個技巧。

但是,我在這裏想知道,這不是字面上做一個重複的消息副本,你最終在這裏有多個重複的消息?

另外如果我需要選擇所有使用特定標籤或本例中某個文件夾附加的郵件?

+2

重新:不copyMessage重複的信息?不在GMail中。 GMail將「文件夾」重新定義爲意味着標籤。所以消息不重複。相反,標籤被應用或刪除。要選擇具有特定標籤的所有郵件,請使用imap操作選擇(標籤)選擇「文件夾」,然後選擇imap搜索以檢索「文件夾」中郵件的郵件標識 - 具有所需標籤的郵件 – 2010-03-25 04:14:40

+0

偉大這是完美的 - 但如果我想選擇INBOX中沒有標記某個標籤的所有電子郵件,我該怎麼做? – Ali 2010-03-25 08:04:42

回答

11

回覆:關於Gmail標籤 - 他們從技術上講是什麼。

由於IMAP沒有「標籤」的概念,所以在GMail「標籤」和IMAP「文件夾」之間或多或少有一個映射,Here是我找到的最好的文檔。但真正幫助我創建與GMail的程序化IMAP交互的是實驗。

例如,預設標籤具有Added--的

Human name -- IMAP Folder name 
Drafts -- [Gmail]/Drafts 
Sent Mail -- [Gmail]/Sent Mail 
Spam -- [Gmail]/Spam 
Starred -- [Gmail]/Starred 
Trash -- [Gmail]/Trash 

IMAP文件夾名稱

回覆:創建一個標籤,並使用代碼它附加到電子郵件,因爲我通過他們循環 - 如何我可以在代碼中做到嗎?

要創建標籤,請使用Imap的「創建文件夾」操作。

使用Imap複製操作爲消息添加標籤。

要從GMail收件箱中刪除郵件,我90%確定您添加了IMAP標記「已刪除」。 - 但請先嚐試一下。當您設置刪除的標誌時,我不清楚哪些標籤被刪除。在我的測試中,當我應用刪除的標誌時,該消息只有1個標籤(收件箱)。

下面是我用從收件箱中移動Gmail郵件到回收站文件夾代碼:

# Ruby code... 
imap.store(message_id, "+FLAGS", [:Deleted]) # rm inbox label 
imap.copy(message_id, "[Gmail]/Trash")  # add trash label 
+0

嗯所以基本上標籤映射到IMAP文件夾 - 很酷 - 所以如果我要'使用我自己的PHP代碼'在Gmail中的郵件'應用'標籤。我該怎麼做? – Ali 2010-03-16 15:13:05

+0

不幸的是,我不熟悉php imap庫。它應該公開各種Imap程序的'創建文件夾','複製到文件夾'等。 – 2010-03-16 15:16:11

3

對於PHP你試過imap_mail_move

http://ro.php.net/manual/en/function.imap-mail-move.php

+2

'imap_mail_move'將應用標籤,並從收件箱中刪除郵件(歸檔郵件)。如果要應用標籤,請使用'imap_mail_copy',但仍將郵件保留在收件箱中。 – 2010-03-17 05:14:51

+0

發現困難的方式感謝輸入 - 檢查我的更新! – Ali 2010-03-17 06:23:03

0

我非常遲到了這裏,但人可能會從https://developers.google.com/gmail/imap_extensions找到這個信息有用:

Gmail將標籤視爲用於IMAP目的的文件夾。因此,可以使用標準IMAP命令CREATE,RENAMEDELETE來修改標籤,這些標籤對文件夾起作用。系統標籤是由Gmail創建的標籤,保留並以標籤列表中的「[Gmail]」或「[GoogleMail]」爲前綴。使用XLIST命令獲取郵箱的完整標籤列表。

給定消息的標籤可以通過使用屬性和FETCH命令來檢索。該屬性返回爲ASTRING s的列表,用UTF-7進行編碼。 ASTRING是由RFC定義的atomstring

下面是一個呼叫的例子轉錄與FETCH命令檢索幾個消息的X-GM-LABELS

a010 FETCH 1:4 (X-GM-LABELS) 
* 1 FETCH (X-GM-LABELS (\Inbox \Sent Important "Muy Importante")) 
* 2 FETCH (X-GM-LABELS (foo)) 
* 3 FETCH (X-GM-LABELS()) 
* 4 FETCH (X-GM-LABELS (\Drafts)) 
a010 OK FETCH (Success) 

標籤可以被添加到與結合使用STORE命令的消息X-GM-LABELS屬性。下面是一個例子轉錄物證實添加的標籤的內容的消息:

a011 STORE 1 +X-GM-LABELS (foo) 
* 1 FETCH (X-GM-LABELS (\Inbox \Sent Important "Muy Importante" foo)) 
a011 OK STORE (Success) 

X-GM-LABELS屬性也可以在SEARCHUID SEARCH命令被用來找到的序列號或UID一切都的具有給定標籤的文件夾中的郵件。下面是一個呼叫的例子轉錄使用SEARCH命令檢索幾個消息的序列號:

a012 SEARCH X-GM-LABELS foo 
* SEARCH 1 2 
a012 OK SEARCH (Success)