通过浏览器访问网址 - 使用imap协议 - 获取邮件内容 - 关键词搜索 - php-imap-reader
需求:通过URL,提交邮箱的用户名和密码,获取到邮件内容。通过关键字搜索邮件。
尝试:用 php-imap-reader 试试。
<?php
date_default_timezone_set('Asia/Shanghai');
require 'src/phpImapReader/Email.php';
require 'src/phpImapReader/EmailAttachment.php';
require 'src/phpImapReader/Reader.php';
use benhall14\phpImapReader\Email;
use benhall14\phpImapReader\EmailAttachment;
use benhall14\phpImapReader\Reader;
// define('IMAP_USERNAME', 'postmaster@lan.anqun.org');
// define('IMAP_PASSWORD', 'mima');
define('IMAP_MAILBOX', '{127.0.0.1:993/imap/ssl/novalidate-cert}'); // For example: {outlook.office365.com:993/imap/ssl/novalidate-cert}
define('ATTACHMENT_PATH', __DIR__ . '/attachments/');
define('IMAP_USERNAME', $_REQUEST['n']);
define('IMAP_PASSWORD', $_REQUEST['p']);
// echo $_REQUEST['n'];
// echo $_REQUEST['p'];
// echo $_SERVER["QUERY_STRING"];
try {
$imap = new Reader(IMAP_MAILBOX, IMAP_USERNAME, IMAP_PASSWORD, ATTACHMENT_PATH);
$imap->limit(2)->get();
foreach ($imap->emails() as $email) {
echo '<div>';
echo '<div>' . $email->fromEmail() . '</div>';
echo '<div>' . $email->subject() . '</div>';
echo '<div>' . $email->date('Y-m-d H:i:s') . '</div>';
if ($email->hasAttachments()) {
foreach ($email->attachments() as $attachment) {
echo '<div>' . $attachment->filePath() . '</div>';
}
}
#print_r($email->plain());
#print_r($email->html());
#$plainText = $email->plain();
#$extractedText = substr($plainText, 0, 100); // 提取前100个字符
#echo $extractedText;
// 假设 $email 是一个包含邮件信息的对象
$plainText = $email->plain(); // 获取 plain 属性内容
// 使用正则表达式来匹配并提取所需文本内容
// $pattern = '/Password: \w{8}/'; // 用你的实际匹配模式替换 YourPatternHere
$pattern = '/\b\d{6}\b/'; // 用你的实际匹配模式替换 YourPatternHere
if (preg_match($pattern, $plainText, $matches)) {
$extractedText = $matches[0]; // 提取匹配到的文本内容
echo "Extracted text: " . $extractedText;
} else {
echo "Pattern not found in plain text.";
}
echo '</div><br/><br/><hr />';
}
} catch (Exception $e) {
die($e->getMessage());
}