メールサーバーにある未読メールをすべて見つけてダウンロードし、クライアントに表示する必要がある場合があります。このような場合 searchMailsメソッドがそれをやってくれます!これは IMAP 検索プロトコルを使用しており、完全にサーバー側で行われます。つまり、高速で、目的のメールだけを取得することができます。
メール検索
メール検索を行うには、メールサーバーに接続し、メールボックスを選択する必要があります。例では、Inboxメールボックスを使用します。
$transporter:=IMAP New transporter($serverInfo)
$boxInfo :=$transporter.selectBox("inbox")
Inboxメールボックス内を検索するには、IMAPサーバーにクエリーを送信します。未読のメールをすべて検索するには、”unread ” フラグを付けたリクエストを作成し、それをサーバーに searchMailsメソッドでサーバに送信します。
$mailIds:=$transporter.searchMails("未読")
いくつかのフラグを組み合わせることで、より複雑な検索を行うことができます。たとえば、2020年8月1日以降に「imap.test@4d.com」から受信した未読のメールをすべて検索したい場合、次のようになります。
$mailIds:=$transporter.searchMails("unread SINCE \"1-Aug-2020" FROM \"imap.test@4d.com"")
使用可能なフラグの完全なリストは searchMailsメソッドのドキュメントを参照してください。
この検索のお返しに、リクエストにマッチしたメールIDをすべて含むコレクションを取得します。
ダウンロードメール
見つかったメールをすべてダウンロードするには、新しい getMailsメソッドを使用します。このメソッドは、パラメータにメール ID のコレクションを受け取ります。
$mails:=$transporter.getMails($mailsIds)
これで完了です。たった数行のコードで、2020年8月1日以降に「imap.test@4d.com」から受信したすべての未読メールを取得できましたね。