• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Получение Писем Pop3 / Imap С Сервера

  • Автор темы phpmasters
  • Дата начала
P

phpmasters

Добрый день!

Делаю получение писем pop3 с сервера, а именно нужно подключиться, узнать сколько писем, вытащить все что есть из первого письма, это переменная $answer, включая прикрепленные файлы и правильность перекодирования заголовков письма и самого cодержания (тела) письма.

Задача полностью разобрать письмо и вывести эти части на экран в браузере.

Нужно сделать помимо того, что есть еще:
- Перекодировку Темы письма
- Найти и перекодировать Содержание (Тело) письма
- Найти и сохранить прикрепленные файлы письма
- Подключение к Imap c SSL / TLS
- Возможно, что-то еще вывести ...

Вот код, с рабочим примером
Код:
<?php 
// Включаем библиотеку mime parser
require_once('receipt/rfc822_addresses.php');
require_once('receipt/mime_parser.php');

$mime = new mime_parser_class;

error_reporting(E_ALL ^ E_WARNING);
ob_implicit_flush();

// Email хостинг провайдера получил здесь
// http://api.hostinger.com.ua/redir/401579

$address = "mx1.hostinger.com.ua"; // адрес pop3-сервера 
$port	= "110";		 // порт (стандартный pop3 - 110)

$login  = "admin@iaa.besaba.com";	// логин к ящику
$pwd	 = "admin1234567";	// пароль к ящику

try {

// Создаем и соединяем сокет к серверу
echo '<p>Соединение с \''.$address.':'.$port.'\' ... ';
$socket = fsockopen($address, $port, $errno, $errstr);
if (!$socket) {
throw new Exception('fsockopen() failed: '.$errstr."<br>");
}
echo "открыто! </p>";

// Читаем +OK
read_pop3_answer($socket);

// Делаем авторизацию
echo '<p>Авторизация ... ';

write_pop3_response($socket, 'USER '.$login);
read_pop3_answer($socket); // ответ сервера

write_pop3_response($socket, 'PASS '.$pwd);
read_pop3_answer($socket); // ответ сервера

echo "прошла успешно! </p>";

// Определяем кол-во сообщений в ящике и общий размер
write_pop3_response($socket, 'STAT');
$answer = read_pop3_answer($socket); // ответ сервера

preg_match('!([0-9]+)[[:space:]]([0-9]+)!is', $answer, $matches);
$total_count = $matches[1];

echo "<p>".'Всего сообщений: <strong>'.$total_count."</strong></p>";

if ($total_count > 0) {
echo '<p>Общий размер: <strong>'.ceil($matches[2] / 1024)." Kb</strong></p>";
}

$iii = 0;

// Просматриваем параметры каждого сообщения
for ($i = 1; $i <= $total_count; $i++) 
{

write_pop3_response($socket, 'TOP '.$i.' 0');
$answer = read_pop3_answer($socket, true);

write_pop3_response($socket, 'LIST '.$i);
$answer2 = read_pop3_answer($socket);

// Линия
echo '<HR NOSHADE WIDTH="100%" COLOR="#023C47" SIZE="10">';	

// Все сообщение		
echo "<p>СООБЩЕНИЯ $i НАЧАЛО answer</p>";

echo "<pre style=' font-size:20px; font-family:Calibri; padding-left: 6px;'>answer: $answer</pre>";

echo "<p>СООБЩЕНИЯ $i КОНЕЦ answer</p>";

// Определяем тему сообщения		
preg_match('!Subject:[[:space:]]+(.*?)\n+.*!is', $answer, $matches);

$msg_subject = $matches[1];

echo '<p>Сообщение '.$i.' - Тема: <strong>'.$msg_subject."</strong></p>";

// Определяем содержание сообщения		
if (preg_match("!Content preview!ism",$answer))
{
preg_match('!Content preview:[[:space:]]+(.*?)\[...\]!is', $answer, $matches);
$msg_content_preview = $matches[1];
}

if(!isset($msg_content_preview))
{
$msg_content_preview = "-"; // [Name: Name]
}

echo '<p style="width:1000px;">Сообщение '.$i.' - Содержание: <strong>'.$msg_content_preview."</strong></p>";				


// Определяем дату сообщения
preg_match('!Date:[[:space:]]+(.*?)\n+.*!is', $answer, $matches);
$msg_date_answer = date('d.m.Y H:i:s', strtotime($matches[1]));
echo '<p>Сообщение '.$i.' - Дата: <strong>'.$msg_date_answer."</strong></p>";		

// Определяем отправителя сообщения Return			
preg_match('!Return-path:[[:space:]]+(.*?)\n+.*!is', $answer, $matches);
preg_match('|<(.*?)>|is', $matches[1], $matches3);
$return_path = $matches3[1];

echo '<p>Сообщение '.$i.' - Отправитель (Return-path): <strong>'.$return_path."</strong> </p>";

// Определяем отправителя сообщения From
preg_match('!From:[[:space:]]+(.*?)\n+.*!is', $answer, $matches1);
preg_match('|<(.*?)>|is', $matches1[1], $matches2);

// Определяем тип сообщения		
preg_match('!Content-Type:[[:space:]]+(.*?)\n+.*!is', $answer, $matches);
$msg_type = $matches[1];

echo '<p> Сообщение '.$i.' - Тип: <strong>'.$msg_type."</strong></p>";

$ctype = split(";",$msg_type);
$types = split("/",$ctype[0]);
$maintype = trim(strtolower($types[0])); // text или multipart
$subtype = trim(strtolower($types[1])); // а это подтип(plain, html, mixed)

// Определяем получателя сообщения		
preg_match('!To:[[:space:]]+(.*?)\n+.*!is', $answer, $matches);
$msg_SetFrom_email = $matches[1];
echo '<p> Сообщение '.$i.' - Получатель: <strong>'.$msg_SetFrom_email."</strong></p>";			

// Определяем размер сообщения
preg_match('!^\+[A-Za-z]+[[:space:]]+[0-9]+[[:space:]]+([0-9]+)!is', $answer2, $matches);
$msg_size = ceil($matches[1] / 1024);
echo '<p> Сообщение '.$i.' - Размер: <strong>'.$msg_size."</strong> Kb</p>";			

}

echo '<HR NOSHADE WIDTH="100%" COLOR="#023C47" SIZE="10">';	

// Отсоединяемся от сервера
echo "<p>".'Соединение ... ';

write_pop3_response($socket, 'QUIT');
read_pop3_answer($socket); // ответ сервера

echo "закрыто.</p>";

} catch (Exception $e) {
echo "\nError: ".$e->getMessage();
}

if (isset($socket)) {
fclose($socket);
}

// Функция для чтения ответа сервера. Выбрасывает исключение в случае ошибки
function read_pop3_answer($socket, $top = false) {
$read = fgets($socket);

if ($top) {

// Если читаем заголовки
$line = $read;

while (!ereg("^\.\r\n", $line)) {

$line = fgets($socket);
$read .= $line;

}

}

if ($read{0} != '+') {
if (!empty($read)) {
throw new Exception('<p>POP3 failed: '.$read."</p>");
} else {
throw new Exception('<p>Unknown error'."</p>");
}
}

return $read;
}

// Функция для отправки запроса серверу
function write_pop3_response($socket, $msg) {
$msg = $msg."\r\n";
fwrite($socket, $msg);
}
echo "</div>";

?>
В БРАУЗЕРЕ ВЫГЛЯДИТ ТАК
Соединение с 'mx1.hostinger.com.ua:110' ... открыто!

Авторизация ... прошла успешно!

Всего сообщений: 2

Общий размер: 5 Kb

СООБЩЕНИЯ 1 НАЧАЛО answer
answer: +OK
Return-Path:
X-Original-To: admin@iaa.besaba.com
Delivered-To: admin@iaa.besaba.com
Received: from f140.mail.ru (f140.mail.ru [94.100.178.196])
by mx1.main-hosting.eu ([Main-Hosting.eu Mail System]) with ESMTP id CC70D4BC4134
for ; Thu, 2 May 2013 03:59:15 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mail.ru; s=mail;
h=Content-Type:Message-ID:Reply-To:Date:Mime-Version:Subject:To:From; bh=G5kBvrn8IzQ/4mo6nuwdMwVRdRkiJw2yLrLESE313eQ=;
b=rAcU5I7WpRslMAYx4EtlTvr9jUc1QZzveJzPxn0CdA6fq6KMCJ/zKB3KKsuQFdBc633kluQlawSAiJDiuawPtTQ0iaagtEnrYGLClSsFW5FBQ7GotbIVbOFhMYXcgy9L;
Received: from mail by f140.mail.ru with local (envelope-from )
id 1UXoQ6-0003NL-M7
for admin@iaa.besaba.com; Thu, 02 May 2013 11:59:14 +0400
Received: from [94.179.221.66] by e.mail.ru with HTTP;
Thu, 02 May 2013 11:59:14 +0400
From: =?UTF-8?B?0JLQu9Cw0LTQuNC80LjRgCDQntCz0L3QtdCy0L7QuQ==?=
To: admin@iaa.besaba.com
Subject: =?UTF-8?B?0KLQtdC80LAg0L7RgiB2bGFkaW1pcl9vZ25ldm9pQG1haWwucnU=?=
Mime-Version: 1.0
X-Mailer: Mail.Ru Mailer 1.0
X-Originating-IP: [94.179.221.66]
Date: Thu, 02 May 2013 11:59:14 +0400
Reply-To: =?UTF-8?B?0JLQu9Cw0LTQuNC80LjRgCDQntCz0L3QtdCy0L7QuQ==?=
X-Priority: 3 (Normal)
Message-ID: <1367481554.825778370@f140.mail.ru>
Content-Type: multipart/alternative;
boundary="--ALT--ckEmDa3L1367481554"
X-Spam: Not detected
X-Mras: Ok

.

СООБЩЕНИЯ 1 КОНЕЦ answer

Сообщение 1 - Тема: =?UTF-8?B?0KLQtdC80LAg0L7RgiB2bGFkaW1pcl9vZ25ldm9pQG1haWwucnU=?=

Сообщение 1 - Содержание: -

Сообщение 1 - Дата: 02.05.2013 10:59:14

Сообщение 1 - Отправитель (Return-path): vladimir_ognevoi@mail.ru

Сообщение 1 - Тип: multipart/alternative;

Сообщение 1 - Получатель: admin@iaa.besaba.com

Сообщение 1 - Размер: 3 Kb

СООБЩЕНИЯ 2 НАЧАЛО answer
answer: +OK
Return-Path:
X-Original-To: admin@iaa.besaba.com
Delivered-To: admin@iaa.besaba.com
Received: from mail-wg0-f48.google.com (mail-wg0-f48.google.com [74.125.82.48])
by mx1.main-hosting.eu ([Main-Hosting.eu Mail System]) with ESMTP id 39FE04BC4149
for ; Thu, 2 May 2013 06:22:18 -0400 (EDT)
Received: by mail-wg0-f48.google.com with SMTP id f11so389824wgh.15
for ; Thu, 02 May 2013 03:22:18 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20120113;
h=mime-version:x-received:date:message-id:subject:from:to
:content-type;
bh=S+i/3McUv1MIdeEnpC59k5yBeCMBOoqJkfaETp/zT+A=;
b=h4S+RVQGV7C/VV/moVe2EEMHUSwHm7coWWZ+gCs9teM+qZFM/XW6XaY/tJIKlYLdAv
wr/DPjN87k4w5ie0w2dlLnA5FYeoav35gc961jZA6i+clrxUPoGnWepn9QCobJWr8dnz
3V31bwdXrAv4c5Y8N+Q24WqUqhKomkA4nZPxgt6mPpil5JWj+l1azu7EQtelToIdMeY3
NDtVIZjr1I4xuUzhdP4OU734vMFPizVt1ItE9y3rfwg1eNFOqSWAEwD1qD2mVEJy8H4M
ihVZLV+mpZGHSKBYPw/rLqDp2SgDRBfp73AdhdK5E3x2VXE+u+v3umK65G6glOoklElC
knyQ==
MIME-Version: 1.0
X-Received: by 10.194.71.103 with SMTP id t7mr6963200wju.38.1367490137858;
Thu, 02 May 2013 03:22:17 -0700 (PDT)
Received: by 10.194.110.229 with HTTP; Thu, 2 May 2013 03:22:17 -0700 (PDT)
Date: Thu, 2 May 2013 13:22:17 +0300
Message-ID:
Subject: =?KOI8-R?B?8NLP18XSy8EgUEhQINPL0snQ1ME=?=
From: =?KOI8-R?B?98zBxMnNydIg78fOxdfPyg==?=
To: admin@iaa.besaba.com
Content-Type: multipart/mixed; boundary=047d7bd91760e6a94904dbb99b3e

.

СООБЩЕНИЯ 2 КОНЕЦ answer

Сообщение 2 - Тема: =?KOI8-R?B?8NLP18XSy8EgUEhQINPL0snQ1ME=?=

Сообщение 2 - Содержание: -

Сообщение 2 - Дата: 02.05.2013 13:22:17

Сообщение 2 - Отправитель (Return-path): loginv2013@gmail.com

Сообщение 2 - Тип: multipart/mixed; boundary=047d7bd91760e6a94904dbb99b3e

Сообщение 2 - Получатель: admin@iaa.besaba.com

Сообщение 2 - Размер: 3 Kb

Соединение ... закрыто.

Архив рабочего кода Получение писем pop3 с сервера здесь

Если у Вас есть лучшее или готовое решение данной задачи, то выкладывайте для общего обозрения, буду рад протестировать.
 
S

sinkopa

Добрый день!
Делаю получение писем pop3 с сервера, а именно нужно подключиться, узнать сколько писем, вытащить все что есть из первого письма, это переменная $answer, включая прикрепленные файлы и правильность перекодирования заголовков письма и самого cодержания (тела) письма.
Если у Вас есть лучшее или готовое решение данной задачи, то выкладывайте для общего обозрения, буду рад протестировать.
Велосипеды изобретаете? :)
Вот... тестируйте на здоровье... :)
link removed

Могу еще накидать... надо? :)
 
P

phpmasters

Велосипеды изобретаете? :)
Вот... тестируйте на здоровье... :)
link removed

Могу еще накидать... надо? :)

Спасибо за комментарий! :)
Это я уже перебрал, там обычно чего-то нахватает, а именно или просто подключение к ящику и получение количества писем, или нет Imap c SSL / TLS подключения, тема бывает в разной кодировке и содержание тоже, а про аттачи просто молчу, так что проверте, пожалуйста, с тем примером, который выше указал и в архив запаковал, он на данный момент лидер на рынке PHP скриптов такого типа.
 
P

phpmasters

Что скажете про

 
S

sinkopa

Что скажете про

Если это личо мне вопрос, то ничего не скажу... это класика рекомендованная к использованию.
Вы же, я так понял, "мотоцикл" новый изобретаете... :)
Поэтому Вам скорее всего сюда надо:

Мне в свое время вот этот класс приглянулся
Посмотреть вложение pop3class_2009_02_01.zip
взято отсюда
Его обычно и использую. Но там еще мооого интересного... натестируетесь вдоволь... :)
 
P

phpmasters

Использовал файл test_pop3.php из архива pop3class_2009_02_01.zip,
который скачал по этой

ВЫВОД в браузере

Connecting to mx1.hostinger.com.ua ...
S +OK Ready.
Connected to the POP3 server "mx1.hostinger.com.ua".
C USER admin@iaa.besaba.com
S +OK
C PASS admin1234567
S +OK Logged in.
User "admin@iaa.besaba.com" logged in.
C STAT
S +OK 2 4782
There are 2 messages in the mail box with a total of 4782 bytes.
C LIST
S +OK 2 messages:
S 1 2074
S 2 2708
S .
Message 1 - 2074 bytes.
Message 2 - 2708 bytes.
C UIDL
S +OK
S 1 1367481555.V805I1bc4926M919336.mx.main-hosting.eu
S 2 1367490138.V805I1bc492dM265873.mx.main-hosting.eu
S .
Message 1, Unique ID - "1367481555.V805I1bc4926M919336.mx.main-hosting.eu"
Message 2, Unique ID - "1367490138.V805I1bc492dM265873.mx.main-hosting.eu"
C TOP 1 2
S +OK
S Return-Path: <vladimir_ognevoi@mail.ru>
S X-Original-To: admin@iaa.besaba.com
S Delivered-To: admin@iaa.besaba.com
S Received: from f140.mail.ru (f140.mail.ru [94.100.178.196])
S by mx1.main-hosting.eu ([Main-Hosting.eu Mail System]) with ESMTP id CC70D4BC4134
S for <admin@iaa.besaba.com>; Thu, 2 May 2013 03:59:15 -0400 (EDT)
S DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mail.ru; s=mail;
S h=Content-Type:Message-ID:Reply-To:Date:Mime-Version:Subject:To:From; bh=G5kBvrn8IzQ/4mo6nuwdMwVRdRkiJw2yLrLESE313eQ=;
S b=rAcU5I7WpRslMAYx4EtlTvr9jUc1QZzveJzPxn0CdA6fq6KMCJ/zKB3KKsuQFdBc633kluQlawSAiJDiuawPtTQ0iaagtEnrYGLClSsFW5FBQ7GotbIVbOFhMYXcgy9L;
S Received: from mail by f140.mail.ru with local (envelope-from <vladimir_ognevoi@mail.ru>)
S id 1UXoQ6-0003NL-M7
S for admin@iaa.besaba.com; Thu, 02 May 2013 11:59:14 +0400
S Received: from [94.179.221.66] by e.mail.ru with HTTP;
S Thu, 02 May 2013 11:59:14 +0400
S From: =?UTF-8?B?0JLQu9Cw0LTQuNC80LjRgCDQntCz0L3QtdCy0L7QuQ==?= <vladimir_ognevoi@mail.ru>
S To: admin@iaa.besaba.com
S Subject: =?UTF-8?B?0KLQtdC80LAg0L7RgiB2bGFkaW1pcl9vZ25ldm9pQG1haWwucnU=?=
S Mime-Version: 1.0
S X-Mailer: Mail.Ru Mailer 1.0
S X-Originating-IP: [94.179.221.66]
S Date: Thu, 02 May 2013 11:59:14 +0400
S Reply-To: =?UTF-8?B?0JLQu9Cw0LTQuNC80LjRgCDQntCz0L3QtdCy0L7QuQ==?= <vladimir_ognevoi@mail.ru>
S X-Priority: 3 (Normal)
S Message-ID: <1367481554.825778370@f140.mail.ru>
S Content-Type: multipart/alternative;
S boundary="--ALT--ckEmDa3L1367481554"
S X-Spam: Not detected
S X-Mras: Ok
S
S
S ----ALT--ckEmDa3L1367481554
S .
Message 1:
---Message headers starts below---
Return-Path: <vladimir_ognevoi@mail.ru>
X-Original-To: admin@iaa.besaba.com
Delivered-To: admin@iaa.besaba.com
Received: from f140.mail.ru (f140.mail.ru [94.100.178.196]) by mx1.main-hosting.eu ([Main-Hosting.eu Mail System]) with ESMTP id CC70D4BC4134 for <admin@iaa.besaba.com>; Thu, 2 May 2013 03:59:15 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mail.ru; s=mail; h=Content-Type:Message-ID:Reply-To:Date:Mime-Version:Subject:To:From; bh=G5kBvrn8IzQ/4mo6nuwdMwVRdRkiJw2yLrLESE313eQ=; b=rAcU5I7WpRslMAYx4EtlTvr9jUc1QZzveJzPxn0CdA6fq6KMCJ/zKB3KKsuQFdBc633kluQlawSAiJDiuawPtTQ0iaagtEnrYGLClSsFW5FBQ7GotbIVbOFhMYXcgy9L;
Received: from mail by f140.mail.ru with local (envelope-from <vladimir_ognevoi@mail.ru>) id 1UXoQ6-0003NL-M7 for admin@iaa.besaba.com; Thu, 02 May 2013 11:59:14 +0400
Received: from [94.179.221.66] by e.mail.ru with HTTP; Thu, 02 May 2013 11:59:14 +0400
From: =?UTF-8?B?0JLQu9Cw0LTQuNC80LjRgCDQntCz0L3QtdCy0L7QuQ==?= <vladimir_ognevoi@mail.ru>
To: admin@iaa.besaba.com
Subject: =?UTF-8?B?0KLQtdC80LAg0L7RgiB2bGFkaW1pcl9vZ25ldm9pQG1haWwucnU=?=
Mime-Version: 1.0
X-Mailer: Mail.Ru Mailer 1.0
X-Originating-IP: [94.179.221.66]
Date: Thu, 02 May 2013 11:59:14 +0400
Reply-To: =?UTF-8?B?0JLQu9Cw0LTQuNC80LjRgCDQntCz0L3QtdCy0L7QuQ==?= <vladimir_ognevoi@mail.ru>
X-Priority: 3 (Normal)
Message-ID: <1367481554.825778370@f140.mail.ru>
Content-Type: multipart/alternative; boundary="--ALT--ckEmDa3L1367481554"
X-Spam: Not detected
X-Mras: Ok
---Message headers ends above---
---Message body starts below---
----ALT--ckEmDa3L1367481554
---Message body ends above---
C DELE 1
S +OK Marked to be deleted.
Marked message 1 for deletion.
C RSET
S +OK
Resetted the list of messages to be deleted.
C QUIT
S +OK Logging out.
Closing connection.
Disconnected from the POP3 server "mx1.hostinger.com.ua".

Как теперь зделать разбиение целого массива в переменные, такие как:

// Определяем тему сообщения
$msg_subject = ??????

// Определяем содержание сообщения
$msg_content_preview = ??????

// Определяем тип сообщения
$msg_type = ??????

// Определяем аттачи сообщения
$msg_content_preview = ??????



// Определяем дату сообщения
$msg_date_answer = ??????

// Определяем отправителя сообщения Return
$return_return = ??????

// Определяем отправителя сообщения From
$return_from = ??????



// Определяем получателя сообщения
$msg_SetFrom_email = ??????

// Определяем размер сообщения
$msg_size = ??????

// Определяем приоритет сообщения
$msg_priority = ??????
 
P

phpmasters

Код файла test_pop3.php

PHP:
<?php
/*
* test_pop3.php
*
* @(#) $Header: /home/mlemos/cvsroot/pop3/test_pop3.php,v 1.7 2006/06/11 14:52:09 mlemos Exp $
*
*/

?><HTML>
<HEAD>
<TITLE>Test for Manuel Lemos's PHP POP3 class</TITLE>
</HEAD>
<BODY>
<?php

require("pop3.php");

/* Uncomment when using SASL authentication mechanisms */
/*
require("sasl.php");
*/

$pop3=new pop3_class;
$pop3->hostname="mx1.hostinger.com.ua";			 /* POP 3 server host name					 */
$pop3->port=110;						 /* POP 3 server host port,
usually 110 but some servers use other ports
Gmail uses 995							 */
$pop3->tls=0;							/* Establish secure connections using TLS	 */
$user="admin@iaa.besaba.com";						/* Authentication user name					*/
$password="admin1234567";					/* Authentication password					 */
$pop3->realm="";						 /* Authentication realm or domain			 */
$pop3->workstation="";				  /* Workstation for NTLM authentication		 */
$apop=0;								 /* Use APOP authentication					 */
$pop3->authentication_mechanism="USER"; /* SASL authentication mechanism			  */
$pop3->debug=1;						 /* Output debug information					*/
$pop3->html_debug=1;					 /* Debug information is in HTML				*/
$pop3->join_continuation_header_lines=1; /* Concatenate headers split in multiple lines */

if(($error=$pop3->Open())=="")
{
echo "<PRE>Connected to the POP3 server "".$pop3->hostname."".</PRE>\n";
if(($error=$pop3->Login($user,$password,$apop))=="")
{
echo "<PRE>User "$user" logged in.</PRE>\n";
if(($error=$pop3->Statistics($messages,$size))=="")
{
echo "<PRE>There are $messages messages in the mail box with a total of $size bytes.</PRE>\n";
$result=$pop3->ListMessages("",0);
if(GetType($result)=="array")
{
for(Reset($result),$message=0;$message<count($result);Next($result),$message++)
echo "<PRE>Message ",Key($result)," - ",$result[Key($result)]," bytes.</PRE>\n";
$result=$pop3->ListMessages("",1);
if(GetType($result)=="array")
{
for(Reset($result),$message=0;$message<count($result);Next($result),$message++)
echo "<PRE>Message ",Key($result),", Unique ID - \"",$result[Key($result)],"\"</PRE>\n";
if($messages>0)
{
if(($error=$pop3->RetrieveMessage(1,$headers,$body,2))=="")
{
echo "<PRE>Message 1:\n---Message headers starts below---</PRE>\n";

// ?
// $headers = iconv ("utf-8", "CP1251", $headers);

for($line=0;$line<count($headers);$line++)
echo "<PRE>",HtmlSpecialChars($headers[$line]),"</PRE>\n";
echo "<PRE>---Message headers ends above---\n---Message body starts below---</PRE>\n";
// ?
for($line=0;$line<count($body);$line++)
echo "<PRE>",HtmlSpecialChars($body[$line]),"</PRE>\n";
echo "<PRE>---Message body ends above---</PRE>\n";



if(($error=$pop3->DeleteMessage(1))=="")
{
echo "<PRE>Marked message 1 for deletion.</PRE>\n";
if(($error=$pop3->ResetDeletedMessages())=="")
{
echo "<PRE>Resetted the list of messages to be deleted.</PRE>\n";
}
}
}
}
if($error==""
&& ($error=$pop3->Close())=="")
echo "<PRE>Disconnected from the POP3 server "".$pop3->hostname."".</PRE>\n";

}
else
$error=$result;
}
else
$error=$result;
}
}
}
if($error!="")
echo "<H2>Error: ",HtmlSpecialChars($error),"</H2>";
?>

</BODY>
</HTML>
 
S

sinkopa

Использовал файл test_pop3.php из архива pop3class_2009_02_01.zip,
который скачал по этой

Как теперь зделать разбиение целого массива в переменные, такие как:

$msg_subject = ?????? // Определяем тему сообщения
$msg_content_preview = ?????? // Определяем содержание сообщения
$msg_type = ?????? // Определяем тип сообщения
$msg_content_preview = ?????? // Определяем аттачи сообщения
$msg_date_answer = ?????? // Определяем дату сообщения
$return_return = ?????? // Определяем отправителя сообщения Return
$return_from = ?????? // Определяем отправителя сообщения From
$msg_SetFrom_email = ?????? // Определяем получателя сообщения
$msg_size = ?????? // Определяем размер сообщения
$msg_priority = ?????? // Определяем приоритет сообщения
Это всё элементы массива $headers.
 
P

phpmasters

Спасибо за ответ! :huh:

Наверное, да, там он как-то интересно выводится, HtmlSpecialChars($headers[$line]),
как его загнать в переменную понятия не имею, и возможно нужно через регулярные выражения доставать из него нужные части письма.
 
S

sinkopa

Спасибо за ответ! :)
Наверное, да, там он как-то интересно выводится, HtmlSpecialChars($headers[$line]),
как его загнать в переменную понятия не имею, и возможно нужно через регулярные выражения доставать из него нужные части письма.
Уфф... Ну я же ленивый как кот... ну почему я ведусь на это постоянно... :(
Ну ладно... вот, поработал "лопатой" за Вас.
Держите:
Посмотреть вложение TestMail.rar
"лидер на рынке PHP скриптов такого типа" наверное не получился... но всё таки... :)

PS.
Да. Чуть не забыл. Там код извлекающий из тела письма приаттаченные файлы я закоментил.
В PHP 5.3 как-то по новому ресурс объявлять требует. Сами поглядите как подправитьв "новом стиле".
А то мне лень в мануалы лезть... :)
 
P

phpmasters

Класно поработали, спасибо!

Все поправки смотрите в прикрепленном файле ,
файл Default.html открывайте в браузере,
так как я поработал карандашем и линейкой и нарисал для Вас расширенный путь.

TestMail_Prototype_1_res_1.JPG
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!