Jump to content

Recommended Posts

Posted

Коллеги, приветсвую. стоит задача автоматизировать процесс загрузки в БД неких данных, переодически приходящих в виде вложения по электронной почте.

Уверен что задача не нова и есть какие-то то готвые решения для этих целей.

Никто не сталкивался ?

Posted

Вот пример на 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";

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.