Получение Писем 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 с сервера здесь

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

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

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

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

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

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

Мне в свое время вот этот класс приглянулся
Посмотреть вложение pop3class_2009_02_01.zip
взято отсюда
Его обычно и использую. Но там еще мооого интересного... натестируетесь вдоволь... :)
 
Использовал файл 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 = ??????
 
Код файла 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>
 
Использовал файл 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.
 
Спасибо за ответ! :huh:

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

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

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

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

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