我想使用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
,但在我的删除方法中,我必须重新读取所有邮件,以查找索引值。现在,
Pop3Client
有一个GetMessageUid(int index)
方法,返回一个神秘的字符串(看起来像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
我真的希望我漏掉了什么,这个本来应该是非常简单的过程,但我自己找不到其他任何信息。
GetMessageUid
这样的东西,特别是在使用MailKit这样的高级客户端时,会返回消息的message-id
值,但现在我需要重新考虑。 - ProfKPOP3.DeleteMessage()
只接受索引作为参数。folder.AddFlags
只适用于IMAP,对吧? - MrCalvin