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

藏色散人
Freigeben: 2023-04-10 08:36:02
nach vorne
4949 Leute haben es durchsucht

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",
},
Nach dem Login kopieren

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
        );
    }
Nach dem Login kopieren

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];
}
Nach dem Login kopieren

Bestimmte E-Mails als gelesen markieren

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'));
    }
}
Nach dem Login kopieren
🎜🎜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!

Verwandte Etiketten:
Quelle:segmentfault.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage