如何使用 zend_mail 和 zend_mail_storage_imap 将电子邮件移动到不同的文件夹?

Posted

技术标签:

【中文标题】如何使用 zend_mail 和 zend_mail_storage_imap 将电子邮件移动到不同的文件夹?【英文标题】:How do I move an email to a different folder using zend_mail and zend_mail_storage_imap? 【发布时间】:2011-04-30 21:51:48 【问题描述】:

我正在将这些库用于我正在构建的电子邮件应用程序。

$storage = new Zend_Mail_Storage_Imap($imap);

if (strpos($storage->getMessage($i),'chocolate') !== FALSE ) 


        //Move to chocolate folder here

另外,有没有办法让这个发件人收到的电子邮件从现在开始自动进入巧克力文件夹? ...类似于在 gmail 中构建标签的方式,来自该发件人的所有邮件将来都会自动进入该文件夹。

我还是 zend 的新手,我将再次重新查看文档。

【问题讨论】:

【参考方案1】:

这有点棘手是真的。

$storage = new Zend_Mail_Storage_Imap($imap);
if (strpos($storage->getMessage($i),'chocolate') !== FALSE )
    //Move to chocolate folder here
    $messageUniqueId = $storage->getUniqueId($i);
    $currentMessageId = $storage->getNumberByUniqueId($messageUniqueId);
    $storage->moveMessage($messageUniqueId, 'chocolate');

【讨论】:

仅供参考:如果您直接在 moveMessage 中使用 $i,它可能会起作用。但是,如果应该删除第二条消息并且 $i 来自循环,那么 id 可能是错误的。因此,您必须使用通过 Elzo 代码获得的当前 ID。 Barney 删除了我的编辑:我认为最后一行应该是 $storage->moveMessage($currentMessageId, 'chocolate');我只是用唯一的 id 和 gmail 尝试了它,但没有用。查看 Zend_Mail_Storage_Imap->getNumberByUniqueId($id) 的注释。还是 $currentMessageId 只是为了装饰?假设 Zend 1.12。

以上是关于如何使用 zend_mail 和 zend_mail_storage_imap 将电子邮件移动到不同的文件夹?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 zend_mail 和 zend_mail_storage_imap 将电子邮件移动到不同的文件夹?

使用 Zend_Mail 获取邮件源

使用 Zend_Mail 通过 Exchange Server 发送 SMTP 电子邮件 - 如何诊断这些错误

如何预览 Zend_Mail 的 HTML 代码?

Zend_Mail 和 Mailtrap:错误的发件人地址

在 Zend Framework 2 中使用 Zend_Mail + Zend_Mime 创建 HTML 电子邮件