use Humps\ImapCacheManager\Memcache\MemcacheFolderCache; use Humps\ImapCacheManager\Memcache\MemcacheMessageCache; use Humps\ImapCacheManager\Memcache\MemcacheServer; use Humps\MailManager\Factories\ImapFactory; use Humps\MailManager\ImapMailboxService; require_once '../vendor/autoload.php'; $cacheServer = MemcacheServer::connect('localhost', 11211); $messageCache = new MemcacheMessageCache($cacheServer); $folderCache = new MemcacheFolderCache($cacheServer); $folder = isset($_REQUEST['folder']) ? $_REQUEST['folder'] : 'INBOX'; try { $imap = ImapFactory::create($folder); } catch (Exception $e) { die('Unable to connect to mail server'); } $mailboxService = new ImapMailboxService($imap); $folders = $folderCache->getAllCached(); Sorter::sort($folders, 'name'); // Uses getMailbox() method from the ImapConnection helper trait, or you can do: $imap->getConnection()->getMailbox()->getFolder(); $currentFolder = $mailboxService->getMailbox()->getFolder(); $aliases = $mailboxService->getAliases(); $isTrash = false; if (isset($aliases['trash'])) { if ($aliases['trash'] == $currentFolder) { $isTrash = true; } } $cacheManager = new ImapMessageCache($messageCache, $imap); $messages = $cacheManager->getAllCachedMessages(); $page = isset($_REQUEST['page']) ? $_REQUEST['page'] : 1; $recordsPerPage = 25;
<?php /** * This script can be used either via an ajax call to update cached folders and/or as a cron * job or scheduled task. It simply caches all folders returned from the server. */ use Humps\ImapCacheManager\Memcache\MemcacheFolderCache; use Humps\ImapCacheManager\Memcache\MemcacheServer; use Humps\MailManager\Factories\ImapFactory; use Humps\MailManager\Factories\ImapFolderCollectionFactory; use Humps\MailManager\ImapMailboxService; set_time_limit(0); require_once '../../vendor/autoload.php'; // The memcache server host const HOST = 'localhost'; // The memcache server port const PORT = 11211; $cacheServer = MemcacheServer::connect(HOST, PORT); $cache = new MemcacheFolderCache($cacheServer); // Create the MailboxService so we can access our mailbox $imap = ImapFactory::create('INBOX', '../imap_config/config.php'); $mailboxService = new ImapMailboxService($imap); $folders = ImapFolderCollectionFactory::create($mailboxService->getAllFolders()); $cache->cacheFolders($folders);
<?php use Humps\MailManager\Factories\ImapFactory; use Humps\MailManager\ImapMailboxService; require_once '../vendor/autoload.php'; $folder = isset($_REQUEST['folder']) ? $_REQUEST['folder'] : 'INBOX'; $imap = ImapFactory::create(); $mailboxService = new ImapMailboxService($imap); $mailboxService->emptyTrash(); $message = "Trash Successfully Emptied"; header('Location:index.php?folder=' . $folder . '&success=' . $message);
<?php use Humps\MailManager\Factories\ImapFactory; use Humps\MailManager\ImapMailboxService; require_once '../vendor/autoload.php'; $mid = isset($_REQUEST['mid']) ? $_REQUEST['mid'] : null; $folder = isset($_REQUEST['folder']) ? $_REQUEST['folder'] : null; if ($mid && $folder) { $imap = ImapFactory::create($folder); $mailboxService = new ImapMailboxService($imap); $mailboxService->moveToTrash($mid); $message = "Message Successfully Moved To Trash"; header('Location:index.php?folder=' . $folder . '&success=' . $message); } elseif (!$mid) { die('Invalid Message Number'); } else { die('Invalid Folder'); }
<?php set_time_limit(0); $time_start = microtime(true); use Carbon\Carbon; use Humps\MailManager\Factories\ImapFactory; use Humps\MailManager\Factories\ImapFolderCollectionFactory; use Humps\MailManager\Factories\ImapMailManagerFactory; use Humps\MailManager\Factories\ImapMessageCollectionFactory; use Humps\MailManager\ImapMailboxService; use Humps\MailManager\ImapMailManager; require_once '../vendor/autoload.php'; $folder = isset($_REQUEST['folder']) ? $_REQUEST['folder'] : 'INBOX'; $imap = ImapFactory::create($folder); $mailboxService = new ImapMailboxService($imap); //$messageNumbers = $mailboxService->getMessagesBetween('2016-01-17','2016-01-18'); $folders = ImapFolderCollectionFactory::create($mailboxService->getAllFolders()); // Uses getMailbox() method from the ImapConnection helper trait, or you can do: $imap->getConnection()->getMailbox()->getFolder(); $currentFolder = $mailboxService->getMailbox()->getFolder(); $aliases = $mailboxService->getAliases(); $isTrash = false; if (isset($aliases['trash'])) { if ($aliases['trash'] == $currentFolder) { $isTrash = true; } } // Show all messages for the trash folder, as these are usually auto deleted at specified time periods. So there shouldn't be too many! if ($isTrash) { $messageNumbers = $mailboxService->getAllMessages(); } else { $messageNumbers = $mailboxService->getMessagesAfter(time());
/** * @test */ public function it_returns_true_when_top_level_folder_does_exist() { $imap = $this->getImap(false); /** @noinspection PhpUndefinedMethodInspection */ $this->mailbox->shouldReceive('getMailboxName')->with(true)->andReturn('{imap.example.com:993/imap/ssl}'); /** @noinspection PhpUndefinedMethodInspection */ $imap->shouldReceive('getFolders')->with('{imap.example.com:993/imap/ssl}', 'FOO')->andReturn([]); $mailboxManager = new ImapMailboxService($imap); $exists = $mailboxManager->folderExists('FOO'); $this->assertTrue($exists); }
set_time_limit(0); require_once '../../vendor/autoload.php'; use Humps\ImapCacheManager\Memcache\MemcacheMessageCache; use Humps\ImapCacheManager\Memcache\MemcacheServer; use Humps\ImapCacheManager\ImapMessageCache; use Humps\MailManager\Factories\ImapFactory; use Humps\MailManager\ImapMailboxService; // The number of days the message should remain cached for (Max: 30). Use 0 for never expires const CACHE_DURATION = 28; // The memcache server host const HOST = 'localhost'; // The memcache server port const PORT = 11211; // Pass the cacheBody parameter as false if you do not want to cache the message body. $cacheBody = isset($_REQUEST['cacheBody']) ? $_REQUEST['cacheBody'] : true; $folder = isset($_REQUEST['folder']) ? $_REQUEST['folder'] : 'INBOX'; // Create the MailboxService so we can access our mailbox $imap = ImapFactory::create($folder, '../imap_config/config.php'); $mailboxService = new ImapMailboxService($imap); // Create the cache service $cacheServer = MemcacheServer::connect(HOST, PORT); $cache = new MemcacheMessageCache($cacheServer); $messageCache = new ImapMessageCache($cache, $imap); // Get messages after the last time a message was cached (this is a timestamp, which ImapMailboxService will handle) $lastCached = $cacheServer->getLastCached() ? $cacheServer->getLastCached() : time() - 60 * 60 * 24; echo $lastCached; $messages = $mailboxService->getMessagesAfter($lastCached); // Convert the CACHE_DURATION to seconds. $expires = 60 * 60 * 24 * CACHE_DURATION; // Now cache the messages $messageCache->cacheMessages($messages, true, $expires);
<?php use Humps\MailManager\Factories\ImapFactory; use Humps\MailManager\ImapMailboxService; require_once '../vendor/autoload.php'; $mid = isset($_REQUEST['mid']) ? $_REQUEST['mid'] : null; $folder = isset($_REQUEST['folder']) ? $_REQUEST['folder'] : null; $to = isset($_REQUEST['to']) ? $_REQUEST['to'] : null; if ($mid && $folder) { $imap = ImapFactory::create($folder); $mailboxService = new ImapMailboxService($imap); if (!$mailboxService->moveMessages($mid, $to)) { die(imap_last_error()); } $message = "Message Successfully Moved To " . $to; header('Location:index.php?folder=' . $to . '&success=' . $message); } elseif (!$mid) { die('Invalid Message Number'); } elseif (!$folder) { die('Invalid From Folder'); } else { die('Invalid To Folder'); }