From 687b224da2d390611aa364040b88841b91cbbef6 Mon Sep 17 00:00:00 2001 From: thomascube Date: Sun, 17 Aug 2008 17:28:02 +0000 Subject: Allow to import mbox files --- bin/msgimport.sh | 44 +++++++++++++++++++++++++++++++++++--------- 1 file changed, 35 insertions(+), 9 deletions(-) (limited to 'bin/msgimport.sh') diff --git a/bin/msgimport.sh b/bin/msgimport.sh index 98a03891e..a3ae4c3f2 100755 --- a/bin/msgimport.sh +++ b/bin/msgimport.sh @@ -1,4 +1,4 @@ -#!/usr/bin/php -qC +#!/usr/bin/php 'host', 'u' => 'user', 'p' => 'pass', 'f' => 'file')) + array('host' => 'localhost'); +$args = get_opt(array('h' => 'host', 'u' => 'user', 'p' => 'pass', 'm' => 'mbox', 'f' => 'file')) + array('host' => 'localhost', 'mbox' => 'INBOX'); if ($_SERVER['argv'][1] == 'help') { @@ -104,13 +104,39 @@ $IMAP = new rcube_imap(null); if ($IMAP->connect($host, $args['user'], $args['pass'], $imap_port, $imap_ssl)) { print "IMAP login successful.\n"; - print "Uploading message...\n"; + print "Uploading messages...\n"; + + $count = 0; + $message = $lastline = ''; + $fp = fopen($args['file'], 'r'); + while (($line = fgets($fp)) !== false) + { + if (preg_match('/^From\s+/', $line) && $lastline == '') + { + if (!empty($message)) + { + if ($IMAP->save_message($args['mbox'], rtrim($message))) + $count++; + else + die("Failed to save message to $mailbox\n"); + $message = ''; + } + continue; + } + + $message .= $line; + $lastline = rtrim($line); + } + + if (!empty($message) && $IMAP->save_message($args['mbox'], rtrim($message))) + $count++; + // upload message from file - if ($IMAP->save_message('INBOX', file_get_contents($args['file']))) - print "Message successfully added to INBOX.\n"; + if ($count) + print "$count messages successfully added to $mailbox.\n"; else - print "Adding message failed!\n"; + print "Adding messages failed!\n"; } else { -- cgit v1.2.3