Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: как получить прикрепленные файлы из письма

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
x-miller-x
Отправлено: 28 Декабря, 2016 - 13:52:49
Post Id


Новичок


Покинул форум
Сообщений всего: 52
Дата рег-ции: Апр. 2012  


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4. class Pop3Client {
  5.  
  6.         const TIMEOUT = 30;
  7.  
  8.         private $socket;
  9.         private $errno;
  10.         private $errstr;
  11.  
  12.         /**
  13.          * @param $answer
  14.          * @return bool
  15.          */
  16.         private function answer($answer) {
  17.  
  18.                 return ($answer[0] == '+') ? true : false;
  19.         }
  20.  
  21.         /**
  22.          * @param $host
  23.          * @param $port
  24.          * @param $user
  25.          * @param $pass
  26.          * @throws Exception
  27.          */
  28.         public function __construct($host, $port, $user, $pass) {
  29.  
  30.                 $this->socket = fsockopen($host, $port, $this->errno, $this->errstr, self::TIMEOUT);
  31.                 if (!$this->socket) throw new Exception($this->errno . ' ' . $this->errstr);
  32.  
  33.                 fgets($this->socket, 128);
  34.                 fputs($this->socket, "USER $user\n");
  35.                 fgets($this->socket, 128);
  36.                 fputs($this->socket, "PASS $pass\n");
  37.  
  38.                 if (!$this->answer(fgets($this->socket, 128))) {
  39.                         throw new Exception('Auth failed');
  40.                 }
  41.         }
  42.  
  43.         /**
  44.          * @return integer|bool
  45.          */
  46.         public function count() {
  47.  
  48.                 fputs($this->socket, "STAT\n");
  49.                 $answer = fgets($this->socket, 128);
  50.                 return $this->answer($answer) ? @explode(' ', $answer)[1] : false;
  51.         }
  52.  
  53.         /**
  54.          * @return array|bool
  55.          */
  56.         public function listMessages() {
  57.  
  58.                 $msgCount = $this->count($this->socket);
  59.                 for (fputs($this->socket, "LIST\n"), $list = array(), $len = $msgCount + 1, $i = 0; $i <= $len; $i++) {
  60.                         $answer = fgets($this->socket, 128);
  61.                         if ($i == $len) break;
  62.                         if (!$i) {
  63.                                 if (!$this->answer($answer)) return false;
  64.                                 continue;
  65.                         }
  66.                         list($msgId, $msgLen) = explode(' ', $answer);
  67.                         $list[$msgId] = $msgLen;
  68.                 }
  69.                 return $list;
  70.         }
  71.  
  72.         /**
  73.          * @param $msgId
  74.          * @return bool|string
  75.          */
  76.         public function retrieve($msgId) {
  77.  
  78.                 fputs($this->socket, "RETR $msgId\n");
  79.                 if ($this->answer(fgets($this->socket, 128))) {
  80.                         $msg = '';
  81.                         do {
  82.                                 $tmp_str = fgets($this->socket, 128);
  83.                                 $msg .= $tmp_str;
  84.                         } while (trim($tmp_str) != '.');
  85.                         return $msg;
  86.                 }
  87.                 return false;
  88.         }
  89.  
  90.         /**
  91.          * @param $msgId
  92.          * @return bool
  93.          */
  94.         function delete($msgId) {
  95.  
  96.                 fputs($this->socket, "DELE $msgId\n");
  97.                 return $this->answer(fgets($this->socket, 128));
  98.         }
  99.  
  100.         /**
  101.          * @return bool
  102.          */
  103.         public function reset() {
  104.  
  105.                 fputs($this->socket, "RSET\n");
  106.                 return $this->answer(fgets($this->socket, 128));
  107.         }
  108.  
  109.         /**
  110.          * @param $msg
  111.          * @return bool
  112.          */
  113.         public function boundary($msg) {
  114.  
  115.                 @preg_match_all("|boundary=\"(.*)\"|U", $msg, $out, PREG_PATTERN_ORDER);
  116.                 if (@$out[1][0]) {
  117.                         return $out[1][0];
  118.                 }
  119.                 return false;
  120.         }
  121.  
  122.         /**
  123.          * @return bool
  124.          */
  125.         public function noop() {
  126.  
  127.                 fputs($this->socket, "NOOP\n");
  128.                 return $this->answer(fgets($this->socket, 128));
  129.         }
  130.  
  131.         /**
  132.          * @return bool
  133.          */
  134.         public function quit() {
  135.  
  136.                 fputs($this->socket, "QUIT\n");
  137.                 fclose($this->socket);
  138.                 return true;
  139.         }
  140. }
  141.  
  142.  


есть вот такой класс для работы с почтой

получаю список писем с помощью listMessages()

дальше прохожу по циклу и открываю каждое письмо, но получается только заголовки и содержимое письма можно получить...

а как получить прикрепленные файлы? можно ли вообще?
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB