grifin.ru Posted January 14, 2015 · Report post Коллеги, приветсвую. стоит задача автоматизировать процесс загрузки в БД неких данных, переодически приходящих в виде вложения по электронной почте. Уверен что задача не нова и есть какие-то то готвые решения для этих целей. Никто не сталкивался ? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
dimas Posted January 14, 2015 · Report post Задачка то простая и пишется на любом удобном к прикручиванию языке ... Только сразу подумайте как будете валидировать источник данных ... Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
vop Posted January 14, 2015 · Report post Выдаете письма на конвейер, где и разгребаете самодельным или готовым парсером. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
boco Posted January 14, 2015 · Report post Только сразу подумайте как будете валидировать источник данных ... можно подпись проверять =) Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
dimas Posted January 14, 2015 · Report post можно подпись проверять =) как вариант. терминальщики (тот же Элекснет, Киви не помню) еще и криптуют публичным ключом провайдера. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
s.lobanov Posted January 14, 2015 · Report post Вот пример на PHP+mime_parser.php,v 1.86 2012/10/19 05:05:24: <?php require_once('rfc822_addresses.php'); require_once('mime_parser.php'); $pop_server = 'pop3://pop.SERVER.TLD'; $user = 'ACCOUNT'; $pass = 'PASS'; $curl_verbose = 0;//0 - no debug, 1 - enable curl debug $ch = curl_init(); echo "started\n"; $mime = new mime_parser_class;//email parser curl_setopt($ch, CURLOPT_VERBOSE, $curl_verbose); curl_setopt($ch, CURLOPT_URL, "$pop_server/");//mail list curl_setopt($ch, CURLOPT_USERPWD, "$user:$pass"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $list = curl_exec($ch); // get mail list $list = explode("\n", $list); $limit=20000; foreach($list as $num0) { if(trim($num0)=='')//skip last line continue; $num_a = explode(' ', $num0);//parse "num mail_id" $num = $num_a[0];//get num //echo "$num\n"; curl_setopt($ch, CURLOPT_NOBODY, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'RETR'); curl_setopt($ch, CURLOPT_URL, "$pop_server/$num");//get email #num $email = curl_exec($ch); if($email === FALSE) {//skip if download failed echo "mail $num download failed\n"; continue; } if($mime->Decode(Array('Data' => $email), $decoded)) { if($mime->Analyze($decoded[0], $results)) { $subject = $results['Subject']; $from = $results['From'][0]['address']; $data = isset($results['Data'])?($results['Data']):''; $date = isset($results['Date'])?($results['Date']):''; $location = ''; $data_a = explode("\n", $data); //DO SOMETHING curl_setopt($ch, CURLOPT_NOBODY, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELE'); curl_setopt($ch, CURLOPT_URL, "$pop_server/$num");//delete email #num $del_email = curl_exec($ch); echo "dele $del_email $from $subject$location $date\n"; } } if(--$limit==0) break; } curl_close($ch); echo "end\n"; Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...