You can't connect to the server and login twice - this is what you are doing.
Create new Imap component, use it, then close and dispose it.
You can use the same instance, but you must remember, that you can connect and login only once, and that the server may disconnect you (after some time of inactivity) - you'll receive an exception in such case.
You can't use Imap instance after exception is thrown.
You should dispose it and create a new instance, connecting and loging-in again.
There is no need to check Imap.Connected property, if the connection was not established, you would receive an exception.
Consider reading how get new emails using IMAP, if don't want to rely on IMAP's \Seen flag.
Also invoking Imap.GetMessageInfo for a single message is quite expensive, and seems unnecessary in your code. Remember that nullable fields (DateTime?) may be null.