php web mail应用程序,如何唯一标识它们

时间:2015-07-16 07:46:47

标签: php email imap

我目前正在构建一个php脚本,它使用imap函数从服务器获取电子邮件,并将详细信息存储在数据库中。

我的问题是我不知道如何从已存在的旧邮件中识别新邮件。 以及如何将回复邮件发送到邮件

1 个答案:

答案 0 :(得分:0)

使用UID消息确定最后一条消息,您必须将最后一个UID存储在表

  $uidsArray = imap_sort($imapConnection, SORTARRIVAL, 1, SE_UID);
  if ($uidsArray) {
      // read UID last message, XEmailUID - table(mailbox, lastuid mailbox)
      $lastUIDObject = new XEmailUID();
      $lastUIDObject->setImap($mailbox->getId().'/'.$mailboxRef);
      if (!$lastUIDObject->select()) {
           $lastUIDObject->insert();
      }

      $uidMax = 0;

      foreach ($uidsArray as $uid) {
        if ($uid < $lastUIDObject->getUid()) {
           continue;
        }

        if ($uid >= $uidMax) {
            $uidMax = $uid;
        }

       // your function
       $this->_readIMAPMessage(
          $imapConnection,
          $uid,
          $mailboxRef
       );
      }

      if ($uidMax > 0) {
         $lastUIDObject->setUid($uidMax);
         $lastUIDObject->update();
      }
   }