如何使用 MailKit POP3 客户端通过邮件 ID 删除邮件?
How can I delete a message by message id with MailKit POP3 client?
我想使用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)
方法,它 returns 一个神秘的字符串(看起来像 int)值,与 Mime MessageID 没有任何明显的关系,但看起来这这是我所有的。然后我必须将 MailKit Uid 与每条消息一起存储,使我的检索代码类似于这样,使用字典来存储 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
我真的希望我在这里遗漏了一些东西,应该是一个非常简单的过程确实很简单,但我自己找不到任何其他东西。
消息 UID 是在连接之间跟踪消息的唯一方法。
一条消息的索引可以随着其他消息的删除而改变。
您的选择是:
下载邮件时删除邮件。
保存 UID,以便稍后返回并删除特定消息。
如果您浏览一下 POP3 RFC。
可能更有意义
我想使用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)
方法,它 returns 一个神秘的字符串(看起来像 int)值,与 Mime MessageID 没有任何明显的关系,但看起来这这是我所有的。然后我必须将 MailKit Uid 与每条消息一起存储,使我的检索代码类似于这样,使用字典来存储 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
我真的希望我在这里遗漏了一些东西,应该是一个非常简单的过程确实很简单,但我自己找不到任何其他东西。
消息 UID 是在连接之间跟踪消息的唯一方法。
一条消息的索引可以随着其他消息的删除而改变。
您的选择是:
下载邮件时删除邮件。
保存 UID,以便稍后返回并删除特定消息。
如果您浏览一下 POP3 RFC。
可能更有意义