Php imap open yandex

nagiyevelchin / PHPMailYandex.php

This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters

print » «;
$ mbox = imap_open(» /ONE «, » ***@yandex.ru «, » **** «, OP_HALFOPEN )
or die(» can’t connect: » . imap_last_error());
$ list = imap_getmailboxes( $ mbox , » «, » * «);
if (is_array( $ list ))
print_r( $ list );
> else
echo » imap_getmailboxes failed: » . imap_last_error() . «\n»;
>
imap_close( $ mbox );
/**
* This example shows settings to use when sending via Google’s Gmail servers.
* This uses traditional id & password authentication — look at the gmail_xoauth.phps
* example to see how to use XOAUTH2.
* The IMAP section shows how to save this message to the ‘Sent Mail’ folder using IMAP commands.
*/
//Import PHPMailer classes into the global namespace
use PHPMailer \ PHPMailer \ PHPMailer ;
require ‘vendor/autoload.php’ ;
//Create a new PHPMailer instance
$ mail = new PHPMailer ;
//Tell PHPMailer to use SMTP
$ mail -> isSMTP ();
//Enable SMTP debugging
// 0 = off (for production use)
// 1 = client messages
// 2 = client and server messages
$ mail -> SMTPDebug = 2 ;
//Set the hostname of the mail server
$ mail -> Host = ‘smtp.yandex.ru’ ;
// use
// $mail->Host = gethostbyname(‘smtp.gmail.com’);
// if your network does not support SMTP over IPv6
//Set the SMTP port number — 587 for authenticated TLS, a.k.a. RFC4409 SMTP submission
$ mail -> Port = 465 ;
//Set the encryption system to use — ssl (deprecated) or tls
$ mail -> SMTPSecure = ‘ssl’ ;
//Whether to use SMTP authentication
$ mail -> SMTPAuth = true ;
//Username to use for SMTP authentication — use full email address for gmail
$ mail -> Username = » ***@yandex.ru «;
//Password to use for SMTP authentication
$ mail -> Password = » ****** «;
//Set who the message is to be sent from
$ mail -> setFrom ( ‘***@yandex.ru’ , ‘First Last’ );
//Set who the message is to be sent to
$ mail -> addAddress ( ‘*****@gmail.com’ , ‘John Doe’ );
//Set the subject line
$ mail -> Subject = ‘PHPMailer Yandex SMTP test’ ;
//Read an HTML message body from an external file, convert referenced images to embedded,
//convert HTML into a basic plain-text alternative body
$ mail -> msgHTML ( ‘PHPMailer Yandex SMTP test’ );
//Replace the plain text body with one created manually
$ mail -> AltBody = ‘This is a plain-text message body’ ;
//send the message, check for errors
if (! $ mail -> send ())
echo » Mailer Error: » . $ mail -> ErrorInfo ;
> else
echo » Message sent! «;
//Section 2: IMAP
//Uncomment these to save your message in the ‘Sent Mail’ folder.
if (save_mail( $ mail ))
echo » Message saved! «;
>
>
//Section 2: IMAP
//IMAP commands requires the PHP IMAP Extension, found at: https://php.net/manual/en/imap.setup.php
//Function to call which uses the PHP imap_*() functions to save messages: https://php.net/manual/en/book.imap.php
//You can use imap_getmailboxes($imapStream, ‘/imap/ssl’, ‘*’ ) to get a list of available folders or labels, this can
//be useful if you are trying to get this working on a non-Gmail IMAP server.
function save_mail ( $ mail )
//You can change ‘Sent Mail’ to any other folder or tag
$ path = » ONE «;
//Tell your server to open an IMAP connection using the same username and password as you used for SMTP
$ imapStream = imap_open( $ path , $ mail -> Username , $ mail -> Password );
$ check = imap_check( $ imapStream );
echo » Msg Count before append : «. $ check -> Nmsgs . «\n»;
$ result = imap_append( $ imapStream , $ path , $ mail -> getSentMIMEMessage ());
$ check = imap_check( $ imapStream );
echo » Msg Count after append : «. $ check -> Nmsgs . «\n»;
imap_close( $ imapStream );
return $ result ;
>

Источник

Чтение почты через IMAP в PHP

В PHP без проблем можно работать с почтой через IMAP, для этого есть все необходимые функции, подробнее на php.net.

Получение писем

$imap = imap_open(«адрес», «e-mail», «пароль») – создает подключение к почтовому ящику. Далее, функция imap_search($imap, ‘ALL’) получает массив c индикаторами писем.

ALL Все сообщения
UNSEEN Непрочитанные сообщения
SEEN Прочтенные сообщения (установлен флаг seen)
NEW Новые сообщения (впервые появилось в ящике в ходе текущей сессии)
OLD Старые сообщения
ANSWERED Сообщения с флагом answered (отвеченный)
UNANSWERED Неотвеченные сообщения
DELETED Удаленные сообщения
UNDELETED Не удаленные сообщения
FLAGGED Сообщения с установленным флагом flagged (важное)
RECENT Сообщения с флагом recent (недавнее сообщение)
UNFLAGGED Сообщения без установленных флагов
ON «date» Сообщения с датой, равной « date »
BEFORE «date» Сообщения с датой, до « date »
SINCE «date» Сообщения с датой, после « date »
FROM «string» Сообщения в поле From: которых присутствует «string »
TO «string» Сообщения в поле To: которых присутствует «string »
SUBJECT «string» Сообщения, у которых присутствует «string » в поле Subject
BODY «string» Сообщения содержащие «string » в теле
TEXT «string» Сообщения с текстом «string »
KEYWORD «string» Сообщения с ключевым словом «string»
UNKEYWORD «string» Сообщения, не имеющие ключевого слова «string »

Далее массив обрабатывается в цикле, в примере происходит обход по всем письмам.

$imap = imap_open("INBOX", "mail@test.ru", "Пароль"); $mails_id = imap_search($imap, 'ALL'); foreach ($mails_id as $num) < // Заголовок письма $header = imap_header($imap, $num); var_dump($header); // Тело письма $body = imap_body($imap, $num); var_dump($body); >imap_close($imap);

$header = imap_header($imap, $num) – получает заголовки письма в виде объекта. Для удобства можно преобразовать в массив:

$header = imap_header($imap, $num); $header = json_decode(json_encode($header), true); print_r($header);
Array( [date] => Mon, 16 Sep 2019 16:03:56 +0300 [Date] => Mon, 16 Sep 2019 16:03:56 +0300 [subject] => =?UTF-8?B?SGVsbyBXb3JsZA==?= [Subject] => =?UTF-8?B?SGVsbyBXb3JsZA==?= [message_id] => [toaddress] => mail@snipp.ru [to] => Array( [0] => Array( [mailbox] => mail [host] => snipp.ru ) ) [fromaddress] => =?UTF-8?B?MTIzNDU2QHNpdGUucnU=?= [from] => Array( [0] => Array( [personal] => =?UTF-8?B?MTIzNDU2QHNpdGUucnU=?= [mailbox] => 123456 [host] => site.ru ) ) [ccaddress] => [cc] => [reply_toaddress] => [reply_to] => [senderaddress] => [sender] => [Recent] => [Unseen] => [Flagged] => [Answered] => [Deleted] => [Draft] => [Msgno] => 1 [MailDate] => 16-Sep-2019 16:03:59 +0300 [Size] => 38895 [udate] => 1568639039 )

Как видно в примере, тема письма и другие данные закодированы в base64 ( ?UTF-8?B?SGVsbyBXb3JsZA==?= ), декодировать их можно с помощью функции mb_decode_mimeheader() .

$header = imap_header($imap, $num); $header = json_decode(json_encode($header), true); echo mb_decode_mimeheader($header['subject']); 

$body = imap_body($imap, $num) – тело письма, обычный текст.

Может быть закодировано в quoted-printable (= D0=94=D0=BE=D0=B1=D1=80=D1=8B=D0=B9 ), раскодировать можно функцией quoted_printable_decode() .

$body = imap_body($imap, $num); $body = quoted_printable_decode($body); echo $body;

Установка флагов

imap_setflag_full ($imap, $num, $flag) – установит письму флаг, возможны значения:

seen Сообщение прочитано
answered На сообщение отправлен ответ
flagged Сообщение отмечено как «важное»
deleted Сообщение отмечено как удалённое
draft Сообщение отмечено как черновик
recent Недавнее сообщение

Можно установить сразу несколько флагов, разделяя их пробелами.

В примере, письмам, у которых в теме письма есть слово «заявка» устанавливается флаг «важное».

$imap = imap_open("INBOX", "mail@test.ru", "Пароль"); $mails_id = imap_search($imap, 'ALL'); foreach ($mails_id as $num) < // Заголовок письма $header = imap_header($imap, $num); $header = json_decode(json_encode($header), true); $subject = mb_decode_mimeheader($header['subject']); if (mb_strpos($subject, 'заявка') !== false) < imap_setflag_full($imap, $num, '\\flagged'); >> imap_close($imap);

Удаление писем

В цикле, письмо помечается функцией imap_delete() , после этого вызывается функция imap_expunge() , которая выполняет удаление всех помеченных писем.

$imap = imap_open("INBOX", "mail@site.ru", "Пароль"); $mails_id = imap_search($imap, 'ALL'); foreach ($mails_id as $num) < $header = imap_header($imap, $num); $body = imap_body($imap, $num); // Помечаем письмо как удаленное imap_delete($imap, $num); >// Удаление помеченных писем imap_expunge($imap); imap_close($imap);

Источник

Получить письма. Пример работы с IMAP протоколом

IMAP — протокол для доступа к электронной почте. Через этот протокол можно получать любую информацию о почте пользователя. Для работы с почтовым сервером через протокол IMAP в php существует много функций. В примере используем только несколько основных:
imap_open – открывает соединение с почтовым сервером по протоколу IMAP.
imap_search – осуществляет поиск писем по заданным параметрам, например, «NEW» — найдет все новые. И возвращает массив номеров писем.
imap_header – возвращает заголовки письма по его номеру.
imap_fetchbody – получает содержимое «тела» письма по его номеру.
imap_close – закрывает соединение с почтовым сервером.
imap_last_error – возвращает последнюю IMAP-ошибку.

// логин $email = "username@yandex.ru"; // пароль $password = "password"; // соединяемся с почтовым сервером, // в случае ошибки выведем ее на экран $connect_imap = imap_open(" INBOX", $email, $password ) or die("Error:" . imap_last_error()); // проверим ящик на наличие новых писем $mails = imap_search($connect_imap, 'NEW'); // если есть новые письма if($mails)< // перебираем все письма foreach($mails as $num_mail)< // получаем заголовок $header = imap_header($connect_imap, $num_mail); // достаем ящик отправителя письма $mail_from = $header->sender[0]->mailbox . "@" . $header->sender[0]->host; echo "От кого: $mail_from 
"; // получаем тему письма $subject = $header->subject; echo "Тема письма: $subject
"; // получаем содержимое письма $text_mail = imap_fetchbody($connect_imap, $num_mail, 1); echo "Тело письма: $text_mail
"; echo "
"; > >else < echo "Нет новых писем"; >// закрываем соединение imap_close($connect_imap);

Источник

Читайте также:  Конвертер doc to html
Оцените статью