Example #1
0
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);
Example #3
0
<?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');
}
Example #5
0
<?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');
}