A volte è necessario trovare tutte le e-mail non lette sul server di posta e scaricarle per mostrarle al client. Il metodo searchMails lo fa per voi! Utilizza il protocollo di ricerca IMAP, che viene eseguito interamente sul lato server. Ciò significa che è veloce e consente di recuperare solo le e-mail desiderate.
Ricerca e-mail
Per eseguire una ricerca di e-mail, è necessario essere connessi al server di posta e aver selezionato una casella e-mail. Per gli esempi, utilizzeremo la casella di posta in arrivo:
$transporter:=IMAP New transporter($serverInfo)
$boxInfo :=$transporter.selectBox("inbox")
Per cercare all’interno della casella di posta in arrivo, inviare una query al server IMAP. Per cercare tutti i messaggi non letti, creare una richiesta con il flag “non letto” e inviarla al server con il metodo searchMails del proprio transporter IMAP:
$mailIds:=$transporter.searchMails("non letto")
È possibile effettuare ricerche più complesse combinando diversi flag. Ad esempio, se si desidera cercare tutte le e-mail non lette ricevute da “imap.test@4d.com” dal 1° agosto 2020:
$mailIds:=$transporter.searchMails("unread SINCE \"1-Aug-2020\" FROM \"imap.test@4d.com\"")
Per un elenco completo dei flag disponibili, consultare la documentazione del metodo searchMails per la documentazione del metodo.
In cambio di questa ricerca, si otterrà un insieme contenente tutti gli ID delle email che corrispondono alla richiesta.
scaricare le email
Per scaricare tutte le email trovate, si può usare il nuovo metodo getMails che prende come parametro un insieme di ID di messaggi di posta elettronica:
$mails:=$transporter.getMails($mailsIds)
Ecco fatto! In poche righe di codice si sono ottenute tutte le e-mail non lette ricevute da “imap.test@4d.com” dal 1° agosto 2020.