Ejemplo n.º 1
0
     echo "S: Skip {$src_path_stat['mail_count']} messages\n";
     continue;
 }
 echo "S: {$src_path_stat['mail_count']} messages\n";
 // Target Path
 $tgt_path = _path_map($path['name']);
 echo "T: Indexing: {$tgt_path}\n";
 $T->setPath($tgt_path);
 // Creates if needed
 // Show info on Target
 $tgt_path_stat = $T->pathStat();
 echo "T: {$tgt_path_stat['mail_count']} messages\n";
 // Build Index of Target
 $tgt_mail_list = array();
 for ($i = 1; $i <= $tgt_path_stat['mail_count']; $i++) {
     $mail = $T->mailStat($i);
     if (array_key_exists('message_id', $mail)) {
         $tgt_mail_list[$mail['message_id']] = !empty($mail['subject']) ? $mail['subject'] : "[ No Subject ] Message {$i}";
     }
 }
 for ($src_idx = $src_path_stat['mail_count']; $src_idx >= 1; $src_idx--) {
     $stat = $S->mailStat($src_idx);
     $stat['answered'] = trim($stat['Answered']);
     $stat['unseen'] = trim($stat['Unseen']);
     if (empty($stat['subject'])) {
         $stat['subject'] = "[ No Subject ] Message {$src_idx}";
     }
     if (array_key_exists('message_id', $stat)) {
         if (array_key_exists($stat['message_id'], $tgt_mail_list)) {
             echo "S:{$src_idx} Mail: {$stat['subject']}\nT: Already Present\n";
             $S->mailWipe($i);
Ejemplo n.º 2
0
require_once dirname(dirname(__FILE__)) . '/lib/cli.php';
if (empty($_ENV['mail']['imap'])) {
    die("No IMAP Configuration\n");
}
echo "Checking: {$_ENV['mail']['imap']}\n";
$imap = new IMAP($_ENV['mail']['imap']);
$imap_stat = $imap->pathStat();
if (empty($imap_stat)) {
    die("Cannot Check Mailbox\n");
}
// print_r($imap_stat);
if ($imap_stat['mail_count'] == 0) {
    return 0;
}
for ($i = $imap_stat['mail_count']; $i >= 1; $i--) {
    $stat = $imap->mailStat($i);
    // echo "S: {$stat['subject']} {$stat['MailDate']}\n";
    // print_r($stat['from'][0]);
    $from = $stat['from'][0];
    $from_mail = $from->mailbox . '@' . $from->host;
    if (!preg_match('/[\\w\\+\\.]+@[\\w\\.]+/', $from_mail)) {
        die("Invalid From: " . print_r($from, true));
    }
    $sql = 'SELECT contact.* FROM contact LEFT JOIN contact_channel ON contact.id = contact_channel.contact_id ';
    $sql .= ' WHERE contact.email = ? OR contact_channel.data ilike ? ';
    $arg = array($from_mail, $from_mail);
    $res = SQL::fetchAll($sql, $arg);
    if (empty($res) || count($res) == 0) {
        echo "Skip: Unknown Sender: {$from_mail}\n";
        continue;
    }