В IMAP письма остаются на сервере. Таким образом, каждый раз, когда вы приходите, если вы явно не удалили их, старые электронные письма все еще там. Чтобы предотвратить обработку этих электронных писем, у вас может быть переменная, в которой хранится количество сообщений, которые вы обрабатывали ранее, поэтому вы можете перейти от $ i = 0 (предположительно, последнее поступившее) к $ i <$ var, где $ var обозначает число письма уже обработаны. </p>
РЕДАКТИРОВАТЬ:
Поскольку вы удаляете почту с помощью imap_delete, выполняйте imap_expunge в каждом цикле.
РЕДАКТИРОВАТЬ 2:
Используйте imap_reopen, я пытался выполнить скрипт на моем сервере, используя imap_reopen($imapConnection, "{domain.tld}INBOX");
после каждого цикла, и теперь он видит новую почту. Не выполняет новую аутентификацию, просто переместите свой поток.