Как удалить сообщение по идентификатору сообщения с помощью клиента MailKit POP3?



Я хочу использовать MailKit Pop3Client для извлечения сообщений из почтового ящика POP3, а затем удалить эти сообщения после обработки. Поисковый код выглядит примерно так:



Public Function GetMessages(Optional logPath As String = Nothing) As List(Of MimeMessage)

Dim client As Pop3Client
Dim messages = New List(Of MimeMessage)()

Using client
ConnectPop3(client)
Dim count = client.GetMessageCount()
For i As Integer = 0 To count - 1
Dim msg = client.GetMessage(i)
messages.Add(msg)
Next
End Using

Return messages

End Function


Моя проблема здесь в том, чтобы удалить сообщение в другом сообщении, Мне нужен индекс, но это уже давно прошло, как только я вышел из GetMessages. Все, что у меня есть, - это информация, доступная для Объекта MimeMessage, но у этого объекта нет свойства index, только MessageId, но в моем методе удаления мне придется снова прочитать все письма, чтобы найти значение индекса.



Теперь Pop3Client имеет метод GetMessageUid(int index), который возвращает загадочную строку (выглядит как int) значение без видимого отношения вообще к MIME MessageID, но, кажется, это все, что у меня есть. Затем я должен хранить Uid MailKit с каждым сообщением, делая мой поисковый код примерно таким, используя словарь для хранения пар uid-сообщений:



Public Function GetMessages(Optional delete As Boolean = False, Optional logPath As String = Nothing) As List(Of MimeMessage)

Dim client As Pop3Client
Dim messages = New Dictionary(Of String, MimeMessage)

Using client
ConnectPop3(client)
Dim count = client.GetMessageCount()
For i As Integer = 0 To count - 1
Dim msg = client.GetMessage(i)
Dim u = client.GetMessageUid(i)
messages.Add(u, msg)
Next
client.Disconnect(True)
End Using

Return messages

End Function


Я очень надеюсь, что мне чего-то не хватает, и то, что должно быть действительно простым процессом, действительно просто, но я не могу найти что-нибудь еще по своей воле.

691   1  

1 ответ:

Идентификатор сообщения-это единственный способ отслеживать сообщение между соединениями.

Индекс сообщения может изменяться по мере удаления других сообщений.

Ваши варианты:

  • Удаляйте сообщения по мере их загрузки.

  • Сохраните UID, чтобы вы могли вернуться и удалить определенные сообщения позже.

Это может иметь больше смысла, если вы пролистаетеPOP3 RFC .

Comments

    Ничего не найдено.