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

12.04.2019

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

Работать будем используя библиотеку ddeboer/imap

Установка и настройка сервера:

Нужно установить imap расширения для php

 
yum -y install php71w-imap

и включить его в php.ini, в секцию ; Dynamic Extensions ; добавляем:

 
extension=imap.so

Сам скрипт:

 
<?
  error_reporting(E_ALL);
  ini_set('display_errors', 'On');

  require_once('vendor/autoload.php');

  use Ddeboer\Imap\Server;

  $server = new Server('imap.yandex.com');

  $connection = $server->authenticate('LOGIN', 'PASS');

  $mailbox = $connection->getMailbox('INBOX');

  $messages = $mailbox->getMessages();

  foreach ($messages as $message)
  {
    echo $message->getSubject(). '<br />';
/*
$message->getSubject();
$message->getFrom();    // Message\EmailAddress
$message->getTo();      // array of Message\EmailAddress
$message->getDate();    // DateTimeImmutable
$message->isAnswered();
$message->isDeleted();
$message->isDraft();
$message->isSeen();
*/
    
    $attachments = $message->getAttachments();

    foreach ($attachments as $attachment)
    {
      file_put_contents(
        __DIR__.'/tmp/' . $attachment->getFilename(),
        $attachment->getDecodedContent()
      ); 
    }

  }

Еще по теме:

В процессе нашел еще пару интересных библиотек:

barbushin/php-imap - похожая по функционалу, но слишком мало документации.

php-mime-mail-parser - похоже библиотека умеет парсировать писсьма, но по примерам не понятно, умеет ли она их получать с сервера.


Категории: PHP
Пометки: php email attachments
Яндекс.Метрика