Here is a simple working snippet to properly check the return value of imap_msgno():
$id = imap_msgno($imapConnection, $mailUid); //convert to normal messagenumber in current context
$verifyUid = imap_uid($imapConnection, $id);
if ($verifyUid != $mailUid)
throw new Exception("Attention: imap_msgno returned nonsense! The mail was probably not found in the mailbox!");