grifin.ru Posted January 14, 2015 Коллеги, приветсвую. стоит задача автоматизировать процесс загрузки в БД неких данных, переодически приходящих в виде вложения по электронной почте. Уверен что задача не нова и есть какие-то то готвые решения для этих целей. Никто не сталкивался ? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
dimas Posted January 14, 2015 Задачка то простая и пишется на любом удобном к прикручиванию языке ... Только сразу подумайте как будете валидировать источник данных ... Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
vop Posted January 14, 2015 Выдаете письма на конвейер, где и разгребаете самодельным или готовым парсером. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
boco Posted January 14, 2015 Только сразу подумайте как будете валидировать источник данных ... можно подпись проверять =) Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
dimas Posted January 14, 2015 можно подпись проверять =) как вариант. терминальщики (тот же Элекснет, Киви не помню) еще и криптуют публичным ключом провайдера. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
s.lobanov Posted January 14, 2015 Вот пример на 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...