使用代码通过IMAP将标签附加到Gmail中的邮件

Ali*_*Ali 4 php email gmail imap zend-framework

关于Gmail标签 - 从技术角度讲它们是什么.我的意思是通过imap连接我可以访问gmail邮箱并浏览电子邮件但是我想创建一个标签并将其附加到电子邮件中,因为我使用代码循环它们 - 我怎么能在代码中执行此操作?我正在使用php - 和Zend Framework.

编辑===

感谢回复,所以现在很明显标签在这方面被视为文件夹,但我已经尝试了Zend_Mail_Storage_Imap类函数,结果很有趣.如果我尝试Zend_Mail_Storage_Imap:moveMessage函数 - 它会从任何地方删除消息,并在字面上附加一个标签,这意味着如果我希望在我的消息中附加标签foo,则将其从收件箱中删除并附加标签foo.但是,如果我使用Zend_Mail_Storage_Imap :: copyMessage来实现这一目的.

但是,我想在这里,这不是字面上复制的消息副本,你最终在这里有多个重复的消息?

另外,如果我需要选择附加了某个标签的所有邮件,或者在某种情况下在某个文件夹中?

Lar*_*y K 11

Re:关于Gmail标签 - 从技术角度讲它们是什么.

由于IMAP没有"标签"的概念,因此GMail"标签"和IMAP"文件夹"之间或多或少存在映射.是我在其上找到的最佳文档.但真正帮助我创建与GMail的程序化IMAP交互的是实验.

例如,预设标签的IMAP文件夹名称为

Human name -- IMAP Folder name
Drafts -- [Gmail]/Drafts
Sent Mail -- [Gmail]/Sent Mail
Spam -- [Gmail]/Spam
Starred -- [Gmail]/Starred
Trash -- [Gmail]/Trash
Run Code Online (Sandbox Code Playgroud)

添加 -

Re:创建一个标签并将其附加到电子邮件中,因为我使用代码循环它们 - 如何在代码中执行此操作?

要创建标签,请使用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
Run Code Online (Sandbox Code Playgroud)