在本教程中,我们将看到第二个选项,将已发送的电子邮件附加到IMAP服务器。因此,让我们开始。
注意: :本教程将假定您已经安装了Laravel。
composer require webklex/laravel-imap
.env
文件后,将以下代码粘贴到文件末尾。IMAP_HOST="imaphost"
IMAP_PORT="993"
IMAP_ENCRYPTION="ssl"
IMAP_VALIDATE_CERT="true"
IMAP_USERNAME="email"
IMAP_PASSWORD="password"
IMAP_DEFAULT_ACCOUNT=default
IMAP_PROTOCOL=imap
然后根据您的配置更改值。
下一步是生成一个可邮寄的邮件,这样我们就可以发送它,只需运行此命令:
php artisan make:mail TestMail
此命令将生成一个名为TestMail.php
的新的可邮递类。
您现在需要做的就是打开文件并进行编辑(主要调整视图名称)。
注意: :您可以看到有关使用Laravel发送电子邮件的其他教程。
现在,在所有内容都到位之后,现在我们将尝试将电子邮件发送并将其保存在IMAP服务器上。
因此,要发送电子邮件,您需要做的就是以下
$mail = Mail::to('hello@gmail.com')->send(new TestMail());
请注意,我们将结果保存在$mail
变量中,因为我们将使用它来存储已发送的电子邮件。
发送电子邮件后,我们需要立即连接到IMAP服务器。
$client = Client::account('default');
$client->connect();
$folder = $client->getFolderByName('Sent');
上面的代码将尝试使用我们之前在.env
文件中放置的凭据连接到IMAP服务器。建立连接后,我们将检索Sent
文件夹。
注意: :发送的文件夹名称通常为
Sent
,这取决于您的IMAP配置。
成功获取文件夹后,我们现在需要的只是使用appendMessage
方法。
$result = $folder->appendMessage($mail->getSymfonySentMessage()->toString(), ['\Seen'], now()->format("d-M-Y h:i:s O"));
现在让我们分解此方法,然后查看:
第一个参数是字符串格式的消息。
$mail
变量将是SymfonySentMessage
类型,因此它具有称为getSymfonySentMessage()->toString()
的方法,此方法将返回消息的字符串格式。
这是结果的一个例子:
From: Laravel <hello@example.com>
To: hello@gmail.com
Subject: Test Mail
Message-ID: <1259c22f78de504c28beabdb9eda5636@example.com>
MIME-Version: 1.0
Date: Sun, 11 Jun 2023 13:37:36 +0000
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: quoted-printable
HELLO WORLD
使用此字符串,我们将能够附加发送消息,
第二个参数是标志,在此示例中,我们将使用seen
标志,因此将在IMAP上看到。您可以在此RFC 2060
最后,日期,我们将使用它来指示何时将此消息保存在IMAP上。
最后,我们将检查appendMessage
方法的结果。
结果将是类似的
'OK [APPENDUID 1655722943 20] Append completed (0.018 + 0.135 + 0.016 secs)';
如果您有此字符串,那么一切都还好。
我希望您喜欢本教程,并获得有关它的信息。
如果您不清楚或您想询问更多信息,则可以通过Twitter与我联系或在下面发表评论。
再次感谢您,祝您有美好的一天。