Как правильно установить диапазон дат (в минутах, секундах), чтобы получать письма от электронной почты - PullRequest
0 голосов
/ 29 октября 2018
Imports EAGetMail

Public Sub ReceiveMail( _
    ByVal sServer As String, _
    ByVal sUserName As String, _
    ByVal sPassword As String, _
    ByVal bSSLConnection As Boolean _
)
Dim oClient As New MailClient("TryIt")

Dim oServer As New MailServer(sServer, _
    sUserName, sPassword, bSSLConnection, _
    ServerAuthType.AuthLogin, ServerProtocol.Imap4)

Try
    oClient.Connect(oServer)

    Dim options As GetMailInfosOptionType = GetMailInfosOptionType.ReadOnly
    options = options Or GetMailInfosOptionType.DateRange
    options = options Or GetMailInfosOptionType.OrderByDateTime

    oClient.GetMailInfosParam.Reset()
    oClient.GetMailInfosParam.GetMailInfosOptions = options

    oClient.GetMailInfosParam.SubjectContains = "test"
    oClient.GetMailInfosParam.SenderContains = "support"
    oClient.GetMailInfosParam.DateRange.SINCE = System.DateTime.Now.AddMonths(-12)
    oClient.GetMailInfosParam.DateRange.BEFORE = System.DateTime.Now.AddDays(1)  

    Dim infos() As MailInfo = oClient.GetMailInfos()

...

1 Ответ

0 голосов
/ 30 октября 2018

IMAP Search не поддерживает указание времени, период. Если вы хотите сузить его более точно, чем сегодня, вам придется извлечь метаданные и выполнить их на стороне клиента.

Решение: вы можете использовать поиск, чтобы получить идентификаторы сообщений в тот день, который вы хотите (обратите внимание, что IMAP также на самом деле не поддерживает TZ, поэтому вам может потребоваться получить дополнительный день), затем получить их INTERNALDATE и выполнить тонкая фильтрация на клиенте, да. - Макс

...