使用s22.dll和c#从消息中获取LastUID
本文关键字:消息 获取 LastUID s22 dll 使用 | 更新日期: 2023-09-27 17:53:46
我遵循了如何标记未见最后未读消息S22.imap
但是我不能得到我的消息的UID。
long abc = 0;
using (ImapClient Client = new ImapClient("abc.com", 143, "abc@abc.com", "password", S22.Imap.AuthMethod.Login, false))
{
IEnumerable<uint> uids = Client.Search(SearchCondition.Unseen());
IEnumerable<MailMessage> messages = Client.GetMessages(uids, FetchOptions.Normal);
foreach (MailMessage msg in messages)
{
string msgFrom = msg.From.ToString();
string To = msg.To.ToString();
string Subject = msg.Subject;
// here i want the UID of this messge "msg"
// so that i can use it in order to mark this
// message as marked.
abc = abc + 1;
}
}
如何获取UID ?
我不知道如何在S22中得到你想要的。Imap,但这是你如何用MailKit(另一个面向。net的开源Imap库)做到的:
long abc = 0;
using (ImapClient client = new ImapClient ()) {
client.Connect ("abc.com", 143, false);
client.Authenticate ("abc@abc.com", "password");
client.Inbox.Open (FolderAccess.ReadWrite);
var uids = client.Inbox.Search (SearchQuery.NotSeen);
foreach (var uid in uids) {
var message = inbox.GetMessage (uid);
var msgFrom = message.From.ToString ();
var to = message.To.ToString ();
var subject = message.Subject;
// mark the message as read/seen
client.Inbox.AddFlags (uid, MessageFlags.Seen, true);
abc = abc + 1;
}
}
不管它值多少钱,S22。Imap似乎是一个被抛弃的项目(有很多错误没有得到修复),你真的应该用MailKit来代替——它有更多的用户,更多的功能,更少的错误,而且维护得很积极(我这么说的人实际上已经为S22.Imap贡献了补丁)。
希望对你有帮助。