Natknąłem się na tę bibliotekę jak sam googlowałem. Przykładowy kod z jej wykorzystaniem:
<?php
include("vendor/autoload.php");
use Ddeboer\Imap\Server;
use Ddeboer\Imap\SearchExpression;
use Ddeboer\Imap\Search\Email\From;
use Ddeboer\Imap\Search\Text\Body;
use Ddeboer\Imap\Search\Text\Keyword;
use Ddeboer\Imap\Search\Text\Subject;
use Ddeboer\Imap\Search\Text\Text;
$server = new Server('imap.poczta.onet.pl');
$connection = $server->authenticate('login@onet.pl', 'haslo');
$mailboxes = $connection->getMailboxes();
foreach ($mailboxes as $mailbox) {
// Skip container-only mailboxes
if ($mailbox->getAttributes() & \LATT_NOSELECT) {
continue;
}
if($mailbox->getName() == "Społeczności") {
$search = new SearchExpression();
$search->addCondition(new Body('contents'));
$messages = $mailbox->getMessages($search);
printf($messages->count()."\n"); if($messages) {
<------>foreach ($messages as $message) {
<------> $message->getBodyText();
<------>}
}
}
}
?>
daje:
Kod
Fatal error</b>: Uncaught Ddeboer\Imap\Exception\InvalidSearchCriteriaException: Invalid search criteria [BODY "contents"]
imap_alerts (0):
imap_errors (1):
- [SERVERBUG] BUG: Unknown internal error (0.003 + 0.000 + 0.002 secs). in /var/www/html/vendor/ddeboer/imap/src/Mailbox.php:139
Stack trace:
#0 /var/www/html/ndex.php(26): Ddeboer\Imap\Mailbox->getMessages()
#1 {main}
thrown in <b>/var/www/html/src/Mailbox.php</b> on line <b>139</b><br />
i tak się zastanawiam, czy ten błąd " Invalid search criteria" wywala serwer Onetu czy gdzieś coś pod spodem na moim serwerze
Googluję dalej i natknąłem się na
tę stronę mówiącą, że PHP korzysta z funkcji wyszukiwania z IMAP2. Tymczasem jak odezwiemy się telnetem do serwera pocztowego Onetu mówi on nam, ze komunikuje się z nami za pomocą IMAP w wersji czwartej:
Kod
telnet imap.poczta.onet.pl 143
Trying 213.180.147.154...
Connected to imap.poczta.onet.pl.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID LITERAL+ STARTTLS AUTH=PLAIN AUTH=LOGIN AUTH=XOAUTH2] Onet server ready.
* BYE Disconnected for inactivity.
Connection closed by foreign host