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. POP3和IMAP两种,区别: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ängigkeitenSowohl 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];
}
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. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen
Die Abhängigkeitsinjektion (DI) verbessert die Testbarkeit von PHP -Code durch explizit transitive Abhängigkeiten signifikant. 1) DI -Entkopplungsklassen und spezifische Implementierungen machen Tests und Wartung flexibler. 2) Unter den drei Typen injiziert der Konstruktor explizite Expressionsabhängigkeiten, um den Zustand konsistent zu halten. 3) Verwenden Sie DI -Container, um komplexe Abhängigkeiten zu verwalten, um die Codequalität und die Entwicklungseffizienz zu verbessern.
PHP -Performance -Engpässe können in den folgenden Schritten gelöst werden: 1) Verwenden Sie XDEBUG oder Blackfire für die Leistungsanalyse, um das Problem herauszufinden. 2) Datenbankabfragen optimieren und Caches wie APCU verwenden; 3) Verwenden Sie effiziente Funktionen wie Array_filter, um Array -Operationen zu optimieren. 4) Opcache für Bytecode -Cache konfigurieren; 5) Optimieren Sie das Front-End, z. B. die Reduzierung von HTTP-Anfragen und das Optimieren von Bildern; 6) Überwachen und optimieren Sie die Leistung kontinuierlich. Durch diese Methoden kann die Leistung von PHP -Anwendungen erheblich verbessert werden.
Abhängigkeitsinjektion (DI) InphpisadesignPatternThatManageSandRecesClass -Dependenzen, EnhancingCodemodularity, Testbarkeit und Maschinenbarkeit.itallowsspassingdependencieStaDatabaseConnectionStoclassesasparameters, Erleichterung der Erleichterung von Erleichterung von Vermittlungen und Erleichterung von Erleichterung von und scalierbarkeit.
mPDF ist eine PHP-Bibliothek, die PDF-Dateien aus UTF-8-codiertem HTML generieren kann. Der ursprüngliche Autor, Ian Back, hat mPDF geschrieben, um PDF-Dateien „on the fly“ von seiner Website auszugeben und verschiedene Sprachen zu verarbeiten. Es ist langsamer und erzeugt bei der Verwendung von Unicode-Schriftarten größere Dateien als Originalskripte wie HTML2FPDF, unterstützt aber CSS-Stile usw. und verfügt über viele Verbesserungen. Unterstützt fast alle Sprachen, einschließlich RTL (Arabisch und Hebräisch) und CJK (Chinesisch, Japanisch und Koreanisch). Unterstützt verschachtelte Elemente auf Blockebene (wie P, DIV),
Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.