gXbfB#) ۻbis_IIߪ ۻbis_IIߪ ۻbis_IIߪ ۻbis_II4&D.5;Aϳކ:}Wۻp%7ޔ_#5L@?ss\,fa\eChɛ+MMX,-\_[6Eq_uC^avh ->]+/Wg׿>|"d2D^1=]mwgFN5K]OElf5F \wgFN5K]OwgFN5K]OwgFN5K]O[_׮|S 6 iS&XVŰįwgFN5K]OwgFN5K]OwgFN5K]Ol"Acqw+ajQR90ⱥZU,6Z>ܚ``G6#DAisgQ+RŞԲ&M.x ۻbis_IIߪ ۻbis_IIߪ ۻbis_II߄}BkH1j "S4ԍV*[_wI@乹}yL1PCsI@Qi dp3a{ -h1v3sʼni]N)"Ě1|9hJp4eiD*<"^~9oIcG+e)8JWc=ztɩ S|;wpvnmڑ{\THf"_>'֯Y8[n#Ll"' &!3ceMށ{zM*z o-\gY 4\sJ8J#B:^u #:u9mi&u[]oGE64vuS@D)6$eu-|)- dbwgFN5K]O֒&4"4 *Y+eS Ev(ގ'{H-IP49NOpȾ8u/*Q,Hv~CD9 _~ \nlY4*wgFN5K]OEnM_Oؑ3މK|deH'ȼ x8;t-=c<"ճ ˷ g5h8sI]<'S K C*wͫ8dz4"e%h`"ƭ.I>`dRj>2+]# u:mfnwgFN5K]OT/Y:d'x]+܂:@!Vߴ=wgFN5K]O];2k~E Nvknݴ,wgFN5K]O5ݝ7~@VN3[xNHLޯ%pK}z`|ZK$޷F3!uJ ]9{f;lx+f0Ate*9ܔcqղK,oIJ3܅kmPlgxc66g\1e49;0D2voG3I8N;s, +%tÛkbNvP1xwgFN5K]OV JvF;J6mxyUZlU4wgFN5K]O *I_יwgFN5K]Oov[i葉 A<~t䴈ADbQ\ IKbor>ޯ%])1#aT"#oR&Pmޯ%c66g4ΜYL +V2R⛪^Hm_ ˣoJ*9YwgFN5K]O zOkR"EԩR/Or95%ukme9\: ")Y BTɥ]Ls B}d MA`墎PwgFN5K]OpL'栧zD/P^CnwgFN5K]OwgFN5K]O[_haޯ%wgFN5K]O kH?Q;&^>nwgFN5K]O3DNK*]$d86YO羳O9#y0wgFN5K]OF@׋u"wgFN5K]On|AwgFN5K]OrAX/3 >$QMi-^!0wgFN5K]ObөI%Yp6N?4xNHLoutput->show_message($rcmail->gettext(['name' => 'importmessagesuccess', 'nr' => $imported, 'vars' => ['nr' => $imported]]), 'confirmation'); $rcmail->output->command('command', 'list'); } else { $rcmail->output->show_message('importmessageerror', 'error'); } } else { self::upload_failure(); } // send html page with JS calls as response $rcmail->output->send('iframe'); } public static function zip_extract($path) { if (!class_exists('ZipArchive', false)) { return; } $zip = new ZipArchive; $files = []; if ($zip->open($path)) { for ($i = 0; $i < $zip->numFiles; $i++) { $entry = $zip->getNameIndex($i); $tmpfname = rcube_utils::temp_filename('zipimport'); if (copy("zip://$path#$entry", $tmpfname)) { $ctype = rcube_mime::file_content_type($tmpfname, $entry); list($mtype_primary, ) = explode('/', $ctype); if (in_array($mtype_primary, ['text', 'message'])) { $files[] = $tmpfname; } else { unlink($tmpfname); } } } $zip->close(); } return $files; } public static function save_message($folder, &$message) { $date = null; if (strncmp($message, 'From ', 5) === 0) { // Extract the mbox from_line $pos = strpos($message, "\n"); $from = substr($message, 0, $pos); $message = substr($message, $pos + 1); // Read the received date, support only known date formats // RFC4155: "Sat Jan 3 01:05:34 1996" $mboxdate_rx = '/^([a-z]{3} [a-z]{3} [0-9 ][0-9] [0-9]{2}:[0-9]{2}:[0-9]{2} [0-9]{4})/i'; // Roundcube/Zipdownload: "12-Dec-2016 10:56:33 +0100" $imapdate_rx = '/^([0-9]{1,2}-[a-z]{3}-[0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} [0-9+-]{5})/i'; if ( ($pos = strpos($from, ' ', 6)) && ($dt_str = substr($from, $pos + 1)) && (preg_match($mboxdate_rx, $dt_str, $m) || preg_match($imapdate_rx, $dt_str, $m)) ) { try { $date = new DateTime($m[0], new DateTimeZone('UTC')); } catch (Exception $e) { // ignore } } } // unquote ">From " lines in message body $message = preg_replace('/\n>([>]*)From /', "\n\\1From ", $message); $message = rtrim($message); $rcmail = rcmail::get_instance(); if ($rcmail->storage->save_message($folder, $message, '', false, [], $date)) { return true; } rcube::raise_error("Failed to import message to $folder", true, false); return false; } }