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);
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; }