setImapFlag() public method

Set a IMAP message flag.
public setImapFlag ( string $mailbox, integer $uid, string $flag )
$mailbox string The mailbox name.
$uid integer The message UID.
$flag string The flag to set. A Horde_ActiveSync:: constant.
示例#1
0
文件: Driver.php 项目: Gomez/horde
 /**
  * Sends the email represented by the rfc822 string received by the PIM.
  *
  * @param mixed $rfc822             The rfc822 mime message, a string or
  *                                  stream resource.
  * @param integer|boolean $forward  The UID of the message, if forwarding or
  *                                  true if forwarding and EAS >= 14.0
  * @param integer|boolean $reply    The UID of the message if replying or
  *                                  true if replying and EAS >= 14.0
  * @param string $parent            The collection id of parent message if
  *                                  forwarding/replying.
  * @param boolean $save             Save in sent messages.
  * @param Horde_ActiveSync_Message_SendMail $message  The entire message
  *                          object for EAS 14+ requests. @since 2.5.0
  * @todo H6 - Either make this take an options array or break it into two
  *            separate methods - one for EAS < 14 and one for EAS > 14.
  *
  * @return boolean
  * @throws Horde_ActiveSync_Exception
  */
 public function sendMail($rfc822, $forward = false, $reply = false, $parent = false, $save = true, Horde_ActiveSync_Message_SendMail $message = null)
 {
     ob_start();
     $mailer = new Horde_Core_ActiveSync_Mail($this->_imap, $this->_user, $this->_version);
     $raw_message = !empty($message) ? new Horde_ActiveSync_Rfc822($message->mime) : new Horde_ActiveSync_Rfc822($rfc822);
     $mailer->setRawMessage($raw_message);
     // Replace the entire original MIME part? Save in sent?
     if (!empty($message)) {
         $mailer->replacemime = $message->replacemime;
         $save = $message->saveinsent;
     }
     // [Smart]Reply/[Smart]Forward?
     if ($forward || $reply) {
         $source = $message->source;
         if ($source->longid) {
             list($folderid, $itemid) = each(explode(':', $source, 2));
         } elseif ($forward === true || $reply === true) {
             $folderid = $source->folderid;
             $itemid = $source->itemid;
         }
         try {
             if ($forward === true) {
                 $mailer->setForward($folderid, $itemid);
             } elseif (!empty($forward)) {
                 $mailer->setForward($parent, $forward);
             }
             if ($reply === true) {
                 $mailer->setReply($folderid, $itemid);
             } elseif (!empty($reply)) {
                 $mailer->setReply($parent, $reply);
             }
         } catch (Horde_ActiveSync_Exception $e) {
             $this->_logger->err($e->getMessage());
             $this->_endBuffer();
             throw $e;
         }
     }
     try {
         $mailer->send();
     } catch (Horde_ActiveSync_Exception $e) {
         $this->_logger->err($e->getMessage());
         $this->_endBuffer();
         throw $e;
     }
     if ($save) {
         $sf = $this->getSpecialFolderNameByType(self::SPECIAL_SENT);
         if (!empty($sf)) {
             $this->_logger->info(sprintf("[%s] Preparing to copy to '%s'", $this->_pid, $sf));
             $flags = array(Horde_Imap_Client::FLAG_SEEN);
             // Ignore issues sending to sent, in case the folder isn't
             // available.
             try {
                 $this->_imap->appendMessage($sf, $mailer->getSentMail(), $flags);
             } catch (Horde_ActiveSync_Exception $e) {
                 $this->_logger->err($e->getMessage());
             }
         }
     }
     // Attempt to write forward/reply state.
     if ($this->_version > Horde_ActiveSync::VERSION_TWELVEONE && $mailer->id) {
         $this->_logger->info(sprintf('Logging LASTVERBEXECUTED to Maillog: %s, %s, %s', $mailer->reply ? 'reply' : 'forward', $mailer->imapMessage->getHeaders()->getValue('Message-ID'), $mailer->headers->getValue('To')));
         $this->_connector->mail_logMaillog($mailer->reply ? 'reply' : 'forward', $mailer->imapMessage->getHeaders()->getValue('Message-ID'), $mailer->forward ? $mailer->headers->getValue('To') : null);
         $this->_imap->setImapFlag($mailer->parentFolder, $mailer->id, $mailer->reply ? Horde_ActiveSync::IMAP_FLAG_REPLY : Horde_ActiveSync::IMAP_FLAG_FORWARD);
     }
     // Attempt to log the recipient.
     $this->_logger->info('Logging recipients for RI.');
     $action = $mailer->reply ? 'reply' : ($mailer->forward ? 'forward' : 'new');
     try {
         $this->_connector->mail_logRecipient($action, $mailer->headers->getValue('To'), $mailer->headers->getValue('Message-ID'));
     } catch (Horde_Exception $e) {
         $this->_logger->err($e->getMessage());
     }
     $this->_endBuffer();
     return true;
 }