php - 从 x 秒前获取电子邮件 - PHP IMAP ddeboer 库
问题描述
我正在尝试通过使用 imap 的 ddeboer PHP 库下载电子邮件。我可以登录我的电子邮件帐户并获取电子邮件。但是,每当我尝试通过过滤电子邮件的年龄来获取电子邮件时,它只会返回所有电子邮件。当它实际上应该只返回 x 天/秒等旧的电子邮件时。我使用的函数来自 ddboe 库的文档(https://github.com/ddeboer/imap)。
$today = new DateTimeImmutable();
$thirtyDaysAgo = $today->sub(new DateInterval('P30D'));
$messages = $mailbox->getMessages(
new Ddeboer\Imap\Search\Date\Since($thirtyDaysAgo),
\SORTDATE, // Sort criteria
true // Descending order
);
整个班级是:
<?php
namespace App\Controller;
use DateInterval;
use Ddeboer\Imap\Server;
use stdClass;
use DateTime;
use DateTimeImmutable;
use Ddeboer\Imap\Search\Date\Since;
class RoflsController extends AppController
{
private $connection;
private $server;
public function initialize(): void
{
$this->createServer();
$this->establishConnection("yourUser", "yourPassword");
}
private function createServer()
{
$this->server = new Server('imap.gmail.com');
}
public function getConnection()
{
return $this->connection;
}
public function establishConnection($username, $password)
{
$this->connection = $this->server->authenticate($username, $password);
}
public function imap($username, $password)
{
$this->viewBuilder()->setClassName('Json');
$this->establishConnection($username, $password);
}
public function getMessages()
{
$mailbox = $this->connection->getMailbox('INBOX');
$lastQueriedDateTime = new DateTimeImmutable('@' . (time() - 200));
$messages = $mailbox->getMessages(
new Since($lastQueriedDateTime),
\SORTDATE, // Sort criteria
true // Descending order
);
$msg = [];
$test = [];
foreach ($messages as $message) {
$msg[] = $message;
$test[] = $message->getDate();
}
return $msg;
}
public function turnRawMessagesToArrayOfMessageObjects($messages): array
{
$msgObjectArra = [];
foreach ($messages as $msg) {
$messageObject = new stdClass;
$messageObject->content = $msg->getContent();
$messageObject->subjectLine = $msg->getHeaders()['subject'];
$messageObject->sender = $msg->getHeaders()['fromaddress'];
$messageObject->date = $msg->getHeaders()['date'];
$messageObject->id = uniqid();
$msgObjectArra[] = $messageObject;
}
return $msgObjectArra;
}
}
谁能告诉我我做错了什么?如何仅获取几秒/分钟等前收到的电子邮件?
解决方案
推荐阅读
- wysiwyg - Pimcore 内容编辑器删除
标签 - azure - 如何通过 Java 以编程方式在 Azure 搜索中设置认知搜索功能(使用 OCR)?
- google-cloud-platform - GCP Pub/Sub:如何在 PublishCallbackListener 的 onFailure() 中获取事件详细信息
- python - 使用 SageMath 在 Python 中对非常大的整数进行除法
- mysql - 子查询中多行的比较
- python - 向最终用户显示 FastAPI 验证错误
- php - 从另一个文件获取 JSON 变量的问题
- java - 如何从 java 程序运行 jhipster 命令
- html - HTML 网格数字列边框颜色
- json - 在调用 Api 时将类映射到 json,在颤动中显示错误