Heim >Backend-Entwicklung >PHP-Tutorial >Ausführliche Erläuterung der Verwendung von php-imap zum Abfragen und Betreiben des E-Mail-Posteingangs

Ausführliche Erläuterung der Verwendung von php-imap zum Abfragen und Betreiben des E-Mail-Posteingangs

藏色散人
藏色散人nach vorne
2021-06-18 16:32:054983Durchsuche

In diesem Artikel wird erläutert, wie Sie mit php-imap E-Mail-Postfächer abfragen und verwalten. Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird für alle hilfreich sein.

Vor Kurzem habe ich im Geschäftsszenario E-Mails empfangen und analysiert, die von Benutzern aktiv gesendet wurden, um diese Anforderung zu erkennen und aufzuzeichnen.

Bestimmen Sie die Implementierungsmethode

Es gibt zwei Protokolle zum Lesen von E-Mails: POP3 und IMAP. Der Unterschied: Das POP3-Protokoll ermöglicht E-Mail Clients Der Client lädt E-Mails auf den Server herunter, aber Vorgänge auf dem Client werden nicht an den Server zurückgemeldet. IMAP ermöglicht die bidirektionale Kommunikation zwischen Webmail- und E-Mail-Clients. Bei Vorgängen auf der E-Mail werden auch die entsprechenden Aktionen auf dem Server ausgeführt. POP3IMAP两种,区别:POP3协议允许电子邮件客户端下载服务器上的邮件,但是在客户端的操作,不会反馈到服务器上。IMAP提供webmail与电子邮件客户端之间的双向通信,客户端的操作都会反馈到服务器上,对邮件进行的操作,服务器上的邮件也会做相应的动作。

需求要求处理完用户的邮件以后,将邮件标记为已处理,因此选用IMAP协议。

安装依赖

本地、服务器php均需要安装imap扩展。在项目的composer.json

Die Anforderung erfordert, dass nach der Verarbeitung der E-Mail des Benutzers die E-Mail als verarbeitet markiert werden muss, sodass das IMAP-Protokoll ausgewählt wird.

Installationsabhängigkeiten

Sowohl lokales als auch Server-PHP müssen die Erweiterung imap installieren. Fügen Sie die Erweiterung php-imap (https://github.com/barbushin/php-imap) wie folgt zur composer.json des Projekts hinzu:

"require": {
  "php-imap/php-imap": "^3.1",
},

Konfigurieren Sie zugehörige Dienste

namespace app\library\service\mail;

use PhpImap\Exceptions\ConnectionException;
use PhpImap\Mailbox;

/**
 * 收邮件服务邮件API接口
 * Class PlayService
 * @package app\library\service
 */
class ImapService
{
    public $path = '{imap.263.net:993/imap/ssl}INBOX';   // IMAP server and mailbox folder
    public $login = 'user@263.cn';         // Username for the before configured mailbox
    public $password = 'pwd';                   // Password for the before configured username
    public $dir = null;        // Directory, where attachments will be saved (optional)
    public $encoding = 'UTF-8';   // Server encoding (optional)

    public $mailbox;

    public function __construct()
    {
        $this->mailbox = new Mailbox(
            $this->path,
            $this->login,
            $this->password,
            $this->dir,
            $this->encoding
        );
    }

Alle ungelesenen E-Mails abrufen Auflisten
public function unSeenList()
{
    try {
        $mail_ids = $this->mailbox->searchMailbox('UNSEEN');
    } catch (ConnectionException $ex) {
        die('IMAP connection failed: ' . $ex->getMessage());
    } catch (\Exception $ex) {
        die('An error occured: ' . $ex->getMessage());
    }

    // If $mailsIds is empty, no emails could be found
    if (!$mail_ids) {
        die('Mailbox is empty');
    }

    try {
        $info = $this->mailbox->getMailsInfo($mail_ids);
    } catch (ConnectionException $ex) {
        echo "IMAP connection failed: " . $ex;
        die();
    }
    return ['ids' => $mail_ids, 'list' => $info];
}

Bestimmte E-Mails als gelesen markieren

/**
 * @param array $mail_ids
 * @return mixed
 */
public function markRead($mail_ids)
{
    return $this->mailbox->markMailsAsRead($mail_ids);
}
Suchen Sie nach E-Mails mit bestimmten Themen und markieren Sie sie als gelesen

$imap = new ImapService();
$condition = 'UNSEEN  SUBJECT "' . $title . '" SINCE "' . date('Y-m-d', strtotime('-1 days')) . '" FROM ' . $mail;
$data['mail'] = $imap->mailbox->searchMailbox($condition);
if (!empty($data['mail'])) {
    $data['info'] = $imap->mailbox->getMailsInfo($data['mail']);
    if ($params['mark'] == 1) {
        $data['mark'] = $imap->markRead(array_column($data['info'], 'uid'));
    }
}
🎜🎜Empfohlenes Lernen: „🎜PHP-Video-Tutorial🎜“🎜

Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung der Verwendung von php-imap zum Abfragen und Betreiben des E-Mail-Posteingangs. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen