使用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.dll和c#从消息中获取LastUID

我不知道如何在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贡献了补丁)。

希望对你有帮助。