IMail.Date represents email's "Date" header - it is set by the client when the message is sent (so theoretically it can contain incorrect or bogus values).
Only other email headers that contain date/time information are "received" headers, exposed through IMail.Received property. Each SMTP server, involved in email message transportation, should add such header when it receives a message)
If you use IMAP, you could also use IMAP's internal date - it is exposed on Envelope.InternalDate object (Imap.GetEnvelopeByUID) and MessageInfo.Envelope.InternlDate (Imap.GetMessageInfoByUID):
It is recorded by your IMAP server, when message is received. Internal date is not stored in an email object in any way (not part of a MIME tree nor any header), so it is not accessible through IMail instance.