【发布时间】:2019-11-30 09:58:16
【问题描述】:
我正在使用 php imap 从邮件服务器获取电子邮件并将它们存储在我的服务中,我想从多个电子邮件服务器获取电子邮件..现在我正在使用 gmail 进行测试。
所以有很多电子邮件要接收,我想存储每封邮件的正文和附件..
如您所知,这需要很多时间!
不得不提的是,我使用的是Laravel Webklex 包。
这是我的代码的一部分,以便更好地理解:
public function receiveEmails($criteria)
{
$client = $this->getClient();
$folder = $client->getFolder('INBOX');
switch ($criteria) {
case 'ALL' :
$messages = $folder->messages()->all()->leaveUnread()->limit(5)->get();
break;
case 'UNSEEN':
$messages = $folder->query(null)->unflagged()->leaveUnread()->limit(5)->get();
break;
}
return $messages;
}
/// after save emails to my server I call setFlag() function to change emails flag so next time get new emails
public function setFlag($messages)
{
foreach ($messages as $message) {
$message->setFlag(['flagged']);
}
}
我还尝试按限制获取消息,例如最近 5 封电子邮件,或过去 5 天的电子邮件...按日期或数字过滤..
但我还必须向邮件服务器解释我已经收到了哪些电子邮件,以获取另一封最后的电子邮件.. 与我已经收到的电子邮件不同!
我的解决方案是使用标志...但是您知道每个标志在邮件服务器中都有一个用例,所以我不想使用默认标志..我想使用我的自定义标志..
但我不知道如何创建新标志并使用它。 如果有人知道答案,请与我分享.. 或者如果您认为无法定义自定义标志..请分享您对我的问题的解决方案。
感谢问候
【问题讨论】:
-
您在一个(现在已被审核的)自我回答中链接到了这个问题。请投票以关闭为重复。
-
@GertArnold 不是重复的问题.. 但我提到的链接.. 可以解决它.. 以不同的方式。 ..我想我必须提到cmets中的链接..
-
好的,好的。另一个问题是你的问题不是真正可以回答的,因为你没有显示代码,所以回答者没有什么可以通过的。因此,如果您正确回答自己的问题,它仍然是对未知问题的回答。下次请提出问题,包括minimal reproducible example。