コード例 #1
0
ファイル: Flags.php プロジェクト: rodrigofns/ExpressoLivre3
 /**
  * the singleton pattern
  *
  * @return Felamimail_Controller_Message_Flags
  */
 public static function getInstance()
 {
     if (self::$_instance === NULL) {
         self::$_instance = new Felamimail_Controller_Message_Flags();
     }
     return self::$_instance;
 }
コード例 #2
0
 /**
  * test delete in different accounts
  */
 public function testDeleteMessagesInDifferentAccounts()
 {
     $clonedAccount = $this->_cloneAccount();
     $trashFolderMainAccount = $this->getFolder('Trash');
     $trashFolderClonedAccount = $this->getFolder('Trash', $clonedAccount);
     // empty trash
     Felamimail_Controller_Folder::getInstance()->emptyFolder($trashFolderMainAccount);
     $cachedMessage1 = $this->messageTestHelper('multipart_mixed.eml', 'multipart/mixed', $trashFolderMainAccount);
     $cachedMessage2 = $this->messageTestHelper('complete.eml', 'text/service', $trashFolderClonedAccount);
     Felamimail_Controller_Message_Flags::getInstance()->addFlags(array($cachedMessage1->getId(), $cachedMessage2->getId()), array(Zend_Mail_Storage::FLAG_DELETED));
     $result1 = $this->_searchOnImap('multipart/mixed', $trashFolderMainAccount);
     $this->assertEquals(0, count($result1), $trashFolderMainAccount->globalname . ' still contains multipart/mixed messages:' . print_r($result1, TRUE));
     $result2 = $this->_searchOnImap('text/service', $trashFolderClonedAccount);
     $this->assertEquals(0, count($result2), $trashFolderClonedAccount->globalname . ' still contains text/service messages:' . print_r($result2, TRUE));
 }
コード例 #3
0
 /**
  * send mail via transport (smtp)
  * 
  * @param Zend_Mail $_mail
  * @param Felamimail_Model_Account $_account
  * @param boolean $_saveInSent
  * @param Felamimail_Model_Message $_message
  * @param array $_nonPrivateRecipients
  */
 protected function _sendMailViaTransport(Zend_Mail $_mail, Felamimail_Model_Account $_account, Felamimail_Model_Message $_message = null, $_saveInSent = false, $_nonPrivateRecipients = array())
 {
     $smtpConfig = $_account->getSmtpConfig();
     if (!empty($smtpConfig) && (isset($smtpConfig['hostname']) || array_key_exists('hostname', $smtpConfig))) {
         $transport = new Felamimail_Transport($smtpConfig['hostname'], $smtpConfig);
         if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) {
             $debugConfig = $smtpConfig;
             $whiteList = array('hostname', 'username', 'port', 'auth', 'ssl');
             foreach ($debugConfig as $key => $value) {
                 if (!in_array($key, $whiteList)) {
                     unset($debugConfig[$key]);
                 }
             }
             Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' About to send message via SMTP with the following config: ' . print_r($debugConfig, true));
         }
         Tinebase_Smtp::getInstance()->sendMessage($_mail, $transport);
         if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) {
             Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' successful.');
         }
         // append mail to sent folder
         if ($_saveInSent) {
             $this->_saveInSent($transport, $_account, $this->_getAdditionalHeaders($_message));
         }
         if ($_message !== null) {
             // add reply/forward flags if set
             if (!empty($_message->flags) && ($_message->flags == Zend_Mail_Storage::FLAG_ANSWERED || $_message->flags == Zend_Mail_Storage::FLAG_PASSED) && $_message->original_id instanceof Felamimail_Model_Message) {
                 Felamimail_Controller_Message_Flags::getInstance()->addFlags($_message->original_id, array($_message->flags));
             }
             // add email notes to contacts (only to/cc)
             if ($_message->note) {
                 $this->_addEmailNote($_nonPrivateRecipients, $_message->subject, $_message->getPlainTextBody());
             }
         }
     } else {
         Tinebase_Core::getLogger()->warn(__METHOD__ . '::' . __LINE__ . ' Could not send message, no smtp config found.');
     }
 }
コード例 #4
0
 /**
  * Returns registry data of felamimail.
  * @see Tinebase_Application_Json_Abstract
  * 
  * @return mixed array 'variable name' => 'data'
  * 
  * @todo get default account data (host, port, ...) from preferences?
  */
 public function getRegistryData()
 {
     try {
         $accounts = $this->searchAccounts('');
     } catch (Exception $e) {
         Tinebase_Core::getLogger()->warn(__METHOD__ . '::' . __LINE__ . ' Could not get accounts: ' . $e->getMessage());
         if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) {
             Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' ' . $e->getTraceAsString());
         }
         $accounts = array('results' => array(), 'totalcount' => 0);
     }
     $supportedFlags = Felamimail_Controller_Message_Flags::getInstance()->getSupportedFlags();
     $result = array('accounts' => $accounts, 'supportedFlags' => array('results' => $supportedFlags, 'totalcount' => count($supportedFlags)));
     $result['vacationTemplates'] = $this->getVacationMessageTemplates();
     return $result;
 }
コード例 #5
0
 /**
  * set flags on cache if different
  * 
  * @param array $flags
  * @param Felamimail_Model_Folder $_folderId
  * @param Tinebase_Record_RecordSet $messages
  * @param boolean $checkDiff
  */
 protected function _setFlagsOnCache($flags, $folder, $messages, $checkDiff = true)
 {
     $transactionId = Tinebase_TransactionManager::getInstance()->startTransaction(Tinebase_Core::getDb());
     $supportedFlags = array_keys(Felamimail_Controller_Message_Flags::getInstance()->getSupportedFlags(FALSE));
     $updateCount = 0;
     foreach ($messages as $cachedMessage) {
         if (isset($flags[$cachedMessage->messageuid]) || array_key_exists($cachedMessage->messageuid, $flags)) {
             $newFlags = array_intersect($flags[$cachedMessage->messageuid]['flags'], $supportedFlags);
             if ($checkDiff) {
                 $cachedFlags = array_intersect($cachedMessage->flags, $supportedFlags);
                 $diff1 = array_diff($cachedFlags, $newFlags);
                 $diff2 = array_diff($newFlags, $cachedFlags);
             }
             if (!$checkDiff || count($diff1) > 0 || count($diff2) > 0) {
                 try {
                     $this->_backend->setFlags(array($cachedMessage->getId()), $newFlags, $folder->getId());
                     $updateCount++;
                 } catch (Zend_Db_Statement_Exception $zdse) {
                     if (Tinebase_Core::isLogLevel(Zend_Log::NOTICE)) {
                         Tinebase_Core::getLogger()->notice(__METHOD__ . '::' . __LINE__ . ' Could not update flags, maybe message was deleted or is not in the cache yet.');
                     }
                     Tinebase_Exception::log($zdse);
                 }
             }
         }
     }
     if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) {
         Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' Updated ' . $updateCount . ' messages.');
     }
     Tinebase_TransactionManager::getInstance()->commitTransaction($transactionId);
 }
コード例 #6
0
 /**
  * (non-PHPdoc)
  * @see ActiveSync_Frontend_Abstract::updateEntry()
  */
 public function updateEntry($folderId, $serverId, Syncroton_Model_IEntry $entry)
 {
     if (Tinebase_Core::isLogLevel(Zend_Log::INFO)) {
         Tinebase_Core::getLogger()->info(__METHOD__ . '::' . __LINE__ . " CollectionId: {$folderId} Id: {$serverId}");
     }
     try {
         $message = $this->_contentController->get($serverId);
     } catch (Tinebase_Exception_NotFound $tenf) {
         if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) {
             Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' ' . $tenf);
         }
         throw new Syncroton_Exception_NotFound($tenf->getMessage());
     }
     if (isset($entry->read)) {
         if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) {
             Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . " CollectionId: {$folderId} Id: {$serverId} set read flag: {$entry->read}");
         }
         if ($entry->read == 1) {
             Felamimail_Controller_Message_Flags::getInstance()->addFlags($serverId, Zend_Mail_Storage::FLAG_SEEN);
         } else {
             Felamimail_Controller_Message_Flags::getInstance()->clearFlags($serverId, Zend_Mail_Storage::FLAG_SEEN);
         }
     }
     if (isset($entry->flag)) {
         if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) {
             Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . " CollectionId: {$folderId} Id: {$serverId} set flagged flag: {$entry->flag->status}");
         }
         if ($entry->flag->status == Syncroton_Model_EmailFlag::STATUS_ACTIVE) {
             Felamimail_Controller_Message_Flags::getInstance()->addFlags($serverId, Zend_Mail_Storage::FLAG_FLAGGED);
         } else {
             Felamimail_Controller_Message_Flags::getInstance()->clearFlags($serverId, Zend_Mail_Storage::FLAG_FLAGGED);
         }
     }
     $message->timestamp = $this->_syncTimeStamp;
     $this->_contentController->update($message);
     return;
 }
コード例 #7
0
 /**
  * Tears down the fixture
  * This method is called after a test is executed.
  *
  * @access protected
  */
 protected function tearDown()
 {
     Felamimail_Controller_Message_Flags::getInstance()->addFlags($this->_createdMessages, array(Zend_Mail_Storage::FLAG_DELETED));
     Tinebase_TransactionManager::getInstance()->rollBack();
 }
コード例 #8
0
 /**
  * get complete message by id
  *
  * @param string|Felamimail_Model_Message  $_id
  * @param string                            $_partId
  * @param boolean                          $_setSeen
  * @return Felamimail_Model_Message
  */
 public function getCompleteMessage($_id, $_partId = NULL, $_setSeen = FALSE)
 {
     if ($_id instanceof Felamimail_Model_Message) {
         $message = $_id;
     } else {
         $message = $this->get($_id);
     }
     if (Tinebase_Core::isLogLevel(Zend_Log::INFO)) {
         Tinebase_Core::getLogger()->info(__METHOD__ . '::' . __LINE__ . ' Getting message content ' . $message->messageuid);
     }
     $folder = Felamimail_Controller_Folder::getInstance()->get($message->folder_id);
     $account = Felamimail_Controller_Account::getInstance()->get($folder->account_id);
     $this->_checkMessageAccount($message, $account);
     $message = $this->_getCompleteMessageContent($message, $account, $_partId);
     if ($_setSeen) {
         Felamimail_Controller_Message_Flags::getInstance()->setSeenFlag($message);
     }
     $this->prepareAndProcessParts($message);
     if (Tinebase_Core::isLogLevel(Zend_Log::TRACE)) {
         Tinebase_Core::getLogger()->trace(__METHOD__ . '::' . __LINE__ . ' ' . print_r($message->toArray(), true));
     }
     return $message;
 }
コード例 #9
0
ファイル: Email.php プロジェクト: rodrigofns/ExpressoLivre3
 /**
  * update existing entry
  *
  * @param  string  $_folderId
  * @param  string  $_serverId
  * @param SimpleXMLElement $_data
  * @return Tinebase_Record_Abstract
  */
 public function updateEntry($_folderId, $_serverId, SimpleXMLElement $_entry)
 {
     Tinebase_Core::getLogger()->info(__METHOD__ . '::' . __LINE__ . " CollectionId: {$_folderId} Id: {$_serverId}");
     $xmlData = $_entry->children('uri:Email');
     if (isset($xmlData->Read)) {
         if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) {
             Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . " CollectionId: {$_folderId} Id: {$_serverId} set read flag: {$xmlData->Read}");
         }
         if ((int) $xmlData->Read === 1) {
             Felamimail_Controller_Message_Flags::getInstance()->addFlags($_serverId, Zend_Mail_Storage::FLAG_SEEN);
         } else {
             Felamimail_Controller_Message_Flags::getInstance()->clearFlags($_serverId, Zend_Mail_Storage::FLAG_SEEN);
         }
         $message = $this->_contentController->get($_serverId);
         $message->timestamp = $this->_syncTimeStamp;
         $this->_contentController->update($message);
     }
     return;
 }
コード例 #10
0
 /**
  * set flags on cache if different
  * 
  * @param Tinebase_Record_RecordSet $_messages
  * @param array $_flags
  * @param string $_folderId
  * 
  * @todo check which flags our imap server supports and allow more
  */
 protected function _setFlagsOnCache($_messages, $_flags, $_folderId)
 {
     $transactionId = Tinebase_TransactionManager::getInstance()->startTransaction(Tinebase_Core::getDb());
     $supportedFlags = array_keys(Felamimail_Controller_Message_Flags::getInstance()->getSupportedFlags(FALSE));
     $updateCount = 0;
     foreach ($_messages as $cachedMessage) {
         if (array_key_exists($cachedMessage->messageuid, $_flags)) {
             $newFlags = array_intersect($_flags[$cachedMessage->messageuid]['flags'], $supportedFlags);
             $cachedFlags = array_intersect($cachedMessage->flags, $supportedFlags);
             $diff1 = array_diff($cachedFlags, $newFlags);
             $diff2 = array_diff($newFlags, $cachedFlags);
             if (count($diff1) > 0 || count($diff2) > 0) {
                 $this->_backend->setFlags(array($cachedMessage->getId()), $newFlags, $_folderId);
                 $updateCount++;
             }
         }
     }
     if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) {
         Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' Updated ' . $updateCount . ' flags.');
     }
     Tinebase_TransactionManager::getInstance()->commitTransaction($transactionId);
 }
コード例 #11
0
ファイル: Json.php プロジェクト: rodrigofns/ExpressoLivre3
 /**
  * Returns registry data of felamimail.
  * @see Tinebase_Application_Json_Abstract
  * 
  * @return mixed array 'variable name' => 'data'
  * 
  * @todo get default account data (host, port, ...) from preferences?
  */
 public function getRegistryData()
 {
     try {
         $accounts = $this->searchAccounts('');
     } catch (Exception $e) {
         Tinebase_Core::getLogger()->warn(__METHOD__ . '::' . __LINE__ . ' Could not get accounts: ' . $e->getMessage());
         if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) {
             Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' ' . $e->getTraceAsString());
         }
         $accounts = array('results' => array(), 'totalcount' => 0);
     }
     $supportedFlags = Felamimail_Controller_Message_Flags::getInstance()->getSupportedFlags();
     $extraSenderAccounts = array();
     foreach ($accounts['results'] as $key => $account) {
         try {
             $extraSenderAccounts = Felamimail_Controller_Folder::getInstance()->getUsersWithSendAsAcl($account['id']);
         } catch (Felamimail_Exception_IMAPFolderNotFound $ex) {
             if (Tinebase_Core::isLogLevel(Zend_Log::INFO)) {
                 Tinebase_Core::getLogger()->info(__METHOD__ . '::' . __LINE__ . $ex->getMessage());
             }
             // Ignore this exception here, it happens when INBOX folder is unaccessible.
         } catch (Felamimail_Exception_IMAPServiceUnavailable $ex) {
             // Ignoring this Exception here.
         }
         unset($account['host']);
         unset($account['port']);
         unset($account['ssl']);
         unset($account['smtp_hostname']);
         unset($account['smtp_port']);
         unset($account['smtp_ssl']);
         unset($account['smtp_auth']);
         $accounts['results'][$key] = $account;
     }
     $result = array('extraSenderAccounts' => $extraSenderAccounts, 'accounts' => $accounts, 'supportedFlags' => array('results' => $supportedFlags, 'totalcount' => count($supportedFlags)));
     $defaults = Tinebase_Config::getInstance()->getConfigAsArray(Tinebase_Config::IMAP);
     $defaults['smtp'] = Tinebase_Config::getInstance()->getConfigAsArray(Tinebase_Config::SMTP);
     // remove sensitive data
     unset($defaults['user']);
     unset($defaults['host']);
     unset($defaults['port']);
     unset($defaults['password']);
     unset($defaults['smtp']);
     $result['defaults'] = $defaults;
     return $result;
 }
コード例 #12
0
 /**
  * test flag update
  */
 public function testUpdateFlags()
 {
     $message = $this->_emailTestClass->messageTestHelper('multipart_mixed.eml', 'multipart/mixed');
     // appended messages already have the SEEN flag
     $this->assertTrue(in_array(Zend_Mail_Storage::FLAG_SEEN, $message->flags), 'SEEN flag not found: ' . print_r($message->flags, TRUE));
     // add another flag
     Felamimail_Controller_Message_Flags::getInstance()->addFlags($message, Zend_Mail_Storage::FLAG_ANSWERED);
     while (!isset($updatedFolder) || $updatedFolder->cache_status === Felamimail_Model_Folder::CACHE_STATUS_INCOMPLETE) {
         $updatedFolder = $this->_controller->updateCache($this->_folder, 30, 1);
     }
     // clear/add flag on imap
     $this->_imap->clearFlags($message->messageuid, array(Zend_Mail_Storage::FLAG_SEEN));
     $flagsToAdd = array(Zend_Mail_Storage::FLAG_FLAGGED, Zend_Mail_Storage::FLAG_DRAFT, Zend_Mail_Storage::FLAG_PASSED);
     try {
         $this->_imap->addFlags($message->messageuid, $flagsToAdd);
     } catch (Zend_Mail_Storage_Exception $zmse) {
         // some imap servers (dbmail, ...) do not support PASSED flag
         if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) {
             Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' ' . $zmse->getMessage());
         }
         $this->_imap->addFlags($message->messageuid, array(Zend_Mail_Storage::FLAG_FLAGGED, Zend_Mail_Storage::FLAG_DRAFT));
     }
     $this->_controller->updateFlags($updatedFolder);
     $cachedMessage = Felamimail_Controller_Message::getInstance()->get($message->getId());
     $this->assertTrue(!in_array(Zend_Mail_Storage::FLAG_SEEN, $cachedMessage->flags), 'SEEN flag found: ' . print_r($cachedMessage->flags, TRUE));
     $expectedFlags = array(Zend_Mail_Storage::FLAG_FLAGGED, Zend_Mail_Storage::FLAG_DRAFT, Zend_Mail_Storage::FLAG_ANSWERED);
     $this->assertEquals(3, count($cachedMessage->flags), 'found too many flags: ' . print_r($cachedMessage->flags, TRUE));
     foreach ($expectedFlags as $expectedFlag) {
         $this->assertTrue(in_array($expectedFlag, $cachedMessage->flags), $expectedFlag . ' flag not found: ' . print_r($cachedMessage->flags, TRUE));
     }
     $this->_controller->updateFlags($updatedFolder);
     $cachedMessageAgain = Felamimail_Controller_Message::getInstance()->get($message->getId());
     // cached message should not have been updated again
     $this->assertEquals($cachedMessage->timestamp->__toString(), $cachedMessageAgain->timestamp->__toString());
 }
コード例 #13
0
 /**
  * test sync of existing imap folder
  */
 public function testPingForEmails()
 {
     $imapConfig = Tinebase_Config::getInstance()->get(Tinebase_Config::IMAP);
     if (!$imapConfig || !isset($imapConfig->useSystemAccount) || $imapConfig->useSystemAccount != TRUE) {
         $this->markTestSkipped('IMAP backend not configured');
     }
     $emailController = new ActiveSync_Controller_Email($this->_device, new Tinebase_DateTime(null, null, 'de_DE'));
     $folders = $emailController->getAllFolders();
     $this->assertGreaterThan(0, count($folders));
     foreach ($folders as $folder) {
         if (strtoupper($folder['displayName']) == 'INBOX') {
             break;
         }
     }
     $emailController->updateCache($folder['folderId']);
     // first do a foldersync
     $doc = new DOMDocument();
     $doc->loadXML('<?xml version="1.0" encoding="utf-8"?>
         <!DOCTYPE AirSync PUBLIC "-//AIRSYNC//DTD AirSync//EN" "http://www.microsoft.com/">
         <FolderSync xmlns="uri:FolderHierarchy"><SyncKey>0</SyncKey></FolderSync>');
     $folderSync = new Syncope_Command_FolderSync($doc, $this->_device, $this->_device->policykey);
     $folderSync->handle();
     $syncDoc = $folderSync->getResponse();
     #$syncDoc->formatOutput = true; echo $syncDoc->saveXML();
     // request initial synckey
     $doc = new DOMDocument();
     $doc->loadXML('<?xml version="1.0" encoding="utf-8"?>
         <!DOCTYPE AirSync PUBLIC "-//AIRSYNC//DTD AirSync//EN" "http://www.microsoft.com/">
         <Sync xmlns="uri:AirSync" xmlns:AirSyncBase="uri:AirSyncBase"><Collections><Collection><Class>Email</Class><SyncKey>0</SyncKey><CollectionId>' . $folder['folderId'] . '</CollectionId><DeletesAsMoves/><GetChanges/><WindowSize>100</WindowSize><Options><FilterType>4</FilterType><AirSyncBase:BodyPreference><AirSyncBase:Type>1</AirSyncBase:Type><AirSyncBase:TruncationSize>5120</AirSyncBase:TruncationSize></AirSyncBase:BodyPreference><Conflict>1</Conflict></Options></Collection></Collections></Sync>');
     $sync = new Syncope_Command_Sync($doc, $this->_device, $this->_device->policykey);
     $sync->handle();
     $syncDoc = $sync->getResponse();
     #$syncDoc->formatOutput = true; echo $syncDoc->saveXML();
     // now do the first sync
     $doc = new DOMDocument();
     $doc->loadXML('<?xml version="1.0" encoding="utf-8"?>
         <!DOCTYPE AirSync PUBLIC "-//AIRSYNC//DTD AirSync//EN" "http://www.microsoft.com/">
         <Sync xmlns="uri:AirSync" xmlns:AirSyncBase="uri:AirSyncBase"><Collections><Collection><Class>Email</Class><SyncKey>1</SyncKey><CollectionId>' . $folder['folderId'] . '</CollectionId><DeletesAsMoves/><GetChanges/><WindowSize>100</WindowSize><Options><FilterType>4</FilterType><AirSyncBase:BodyPreference><AirSyncBase:Type>1</AirSyncBase:Type><AirSyncBase:TruncationSize>5120</AirSyncBase:TruncationSize></AirSyncBase:BodyPreference><Conflict>1</Conflict></Options></Collection></Collections></Sync>');
     $sync = new Syncope_Command_Sync($doc, $this->_device, $this->_device->policykey);
     $sync->handle();
     $syncDoc = $sync->getResponse();
     #$syncDoc->formatOutput = true; echo $syncDoc->saveXML();
     // and now we can start the ping request
     $doc = new DOMDocument();
     $doc->loadXML('<?xml version="1.0" encoding="utf-8"?>
         <!DOCTYPE AirSync PUBLIC "-//AIRSYNC//DTD AirSync//EN" "http://www.microsoft.com/">
         <Ping xmlns="uri:Ping"><HeartBeatInterval>10</HeartBeatInterval><Folders><Folder><Id>' . $folder['folderId'] . '</Id><Class>Email</Class></Folder></Folders></Ping>');
     // add test email message to folder
     $emailTest = new Felamimail_Controller_MessageTest();
     $emailTest->setUp();
     $inbox = $emailTest->getFolder('INBOX');
     $email = file_get_contents(dirname(__FILE__) . '/../../Felamimail/files/text_plain.eml');
     Felamimail_Controller_Message::getInstance()->appendMessage($inbox, $email);
     $ping = new Syncope_Command_Ping($doc, $this->_device, null);
     $ping->handle();
     $responseDoc = $ping->getResponse();
     $responseDoc->formatOutput = true;
     //echo $responseDoc->saveXML();
     $xpath = new DomXPath($responseDoc);
     $xpath->registerNamespace('Ping', 'uri:Ping');
     $nodes = $xpath->query('//Ping:Ping/Ping:Status');
     $this->assertEquals(1, $nodes->length, $responseDoc->saveXML());
     $this->assertEquals(Syncope_Command_Ping::STATUS_CHANGES_FOUND, $nodes->item(0)->nodeValue, $responseDoc->saveXML());
     $nodes = $xpath->query('//Ping:Ping/Ping:Folders/Ping:Folder');
     $this->assertEquals(1, $nodes->length, $responseDoc->saveXML());
     $this->assertEquals($folder['folderId'], $nodes->item(0)->nodeValue, $responseDoc->saveXML());
     $message = $emailTest->searchAndCacheMessage('text/plain', $inbox);
     Felamimail_Controller_Message_Flags::getInstance()->addFlags(array($message), array(Zend_Mail_Storage::FLAG_DELETED));
 }
 /**
  * Tears down the fixture
  * This method is called after a test is executed.
  *
  * @access protected
  */
 protected function tearDown()
 {
     if ($this->_emailTestClass instanceof Felamimail_Controller_MessageTest) {
         $this->_emailTestClass->tearDown();
     }
     Felamimail_Controller_Message_Flags::getInstance()->addFlags($this->_createdMessages, array(Zend_Mail_Storage::FLAG_DELETED));
     Felamimail_Controller_Message::getInstance()->delete($this->_createdMessages->getArrayOfIds());
     parent::tearDown();
 }
コード例 #15
0
ファイル: Send.php プロジェクト: rodrigofns/ExpressoLivre3
 /**
  * send mail via transport (smtp)
  * 
  * @param Zend_Mail $_mail
  * @param Felamimail_Model_Account $_account
  * @param boolean $_saveInSent
  * @param Felamimail_Model_Message $_message
  * @param array $_nonPrivateRecipients
  */
 protected function _sendMailViaTransport(Zend_Mail $_mail, Felamimail_Model_Account $_account, Felamimail_Model_Message $_message = NULL, $_saveInSent = false, $_nonPrivateRecipients = array())
 {
     $smtpConfig = $_account->getSmtpConfig();
     if (!empty($smtpConfig) && array_key_exists('hostname', $smtpConfig)) {
         $transport = new Felamimail_Transport($smtpConfig['hostname'], $smtpConfig);
         // send message via smtp
         if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) {
             Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' About to send message via SMTP ...');
         }
         Tinebase_Smtp::getInstance()->sendMessage($_mail, $transport);
         if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) {
             Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' successful.');
         }
         // append mail to sent folder
         if ($_saveInSent) {
             $this->_saveInSent($transport, $_account, $_message !== NULL ? array('Bcc' => $_message->bcc) : array());
         }
         if ($_message !== NULL) {
             // add reply/forward flags if set
             if (!empty($_message->flags) && ($_message->flags == Zend_Mail_Storage::FLAG_ANSWERED || $_message->flags == Zend_Mail_Storage::FLAG_PASSED) && $_message->original_id instanceof Felamimail_Model_Message) {
                 Felamimail_Controller_Message_Flags::getInstance()->addFlags($_message->original_id, array($_message->flags));
             }
             // add email notes to contacts (only to/cc)
             if ($_message->note) {
                 $this->_addEmailNote($_nonPrivateRecipients, $_message->subject, $_message->getPlainTextBody());
             }
         }
     } else {
         Tinebase_Core::getLogger()->warn(__METHOD__ . '::' . __LINE__ . ' Could not send message, no smtp config found.');
     }
 }