gpt4 book ai didi

email - 如何使用 MailKit POP3 客户端通过消息 ID 删除消息?

转载 作者:行者123 更新时间:2023-12-01 23:43:40 24 4
gpt4 key购买 nike

我想使用 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 上的可用信息对象,但没有索引属性,只有 MessageId ,但在我的 Delete 方法中,我必须再次阅读所有邮件,以便查找索引值。

现在 Pop3Client有一个 GetMessageUid(int index)方法,它返回一个与 Mime MessageID 没有明显关系的神秘字符串(看起来像 int)值,但似乎这就是我所拥有的。然后我必须将 MailKit Uid 与每条消息一起存储,使我的检索代码像这样,使用字典来存储 uid-message 对:
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

我真的希望我在这里遗漏了一些东西,应该是一个非常简单的过程确实很简单,但我自己找不到其他任何东西。

最佳答案

消息 UID 是在连接之间跟踪消息的唯一方法。

一条消息的索引可以随着其他消息的删除而改变。

您的选择是:

  • 在下载邮件时删除它们。
  • 保存 UID,以便您稍后返回并删除特定消息。

  • 如果您浏览 POP3 RFC 可能更有意义.

    关于email - 如何使用 MailKit POP3 客户端通过消息 ID 删除消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30146102/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com