Чистая оценка:
Возможно, соединение с imap будет открываться при каждой проверке.
Когда вы сами попробуете, каждый раз открывается новое соединение, и вы получаете последние результаты.
В цикле используется одно и то же соединение, и вы получаете тот же результат, поскольку imaplib не получает результаты с сервера снова.
Вы можете попробовать это:
while 1:
mail = PGM.MailReader('username', 'password')
# rest of your code logic
просто чтобы посмотреть, работает ли это.