2

当我尝试删除一条消息时,它一次删除 4 条消息,即使我另有明确说明,因为我有 700 条消息,所以我最多只能显示 4 条。

public void inboxupdate()
    {
        client.Connect("pop.googlemail.com", 995, true);
        if (client.Connected)
        {
            client.Authenticate(tbxEmail.Text, tbxPassword.Text, OpenPop.Pop3.AuthenticationMethod.UsernameAndPassword);
        }
        int MessageCount = client.GetMessageCount();

        for (int i = 1; i <= 4; i++ )
        {
            try
            {
                cbxInbox.Items.Add(client.GetMessage(i).ToMailMessage().Subject, false);
            }
            catch
            {
            }
        }
    }

要删除的代码:

private void btnDelete_Click(object sender, EventArgs e)
    {
        if (cbxInbox.CheckedItems.Count > 1)
        {
            for (int i = 1; i <= cbxInbox.CheckedItems.Count; i++)
            {
                client.DeleteMessage(i + 1);
            }
        }
        cbxInbox.Items.Clear();
        client.Disconnect();
        inboxupdate();
    }

即使我这样做

client.DeleteMessage(1)

它一次删除4个。此外,这些邮件似乎很旧,因为当我访问 mail.google.com 时它们没有出现在第一页上。有没有办法区分垃圾邮件和邮件?

4

1 回答 1

1

Gmail 有一些有趣的 POP3 实现。一旦你下载了一条消息,下次它就不会再显示给你了。因此,您的问题很可能不是 OpenPop 删除了 4 条消息,而是您下载了 4 条 Gmail 然后向您隐藏的消息。

请参阅以编程方式将 Gmail 用作 POP3 服务器时,Gmail 表现出哪些非标准行为功能?

作为旁注:下次你问一个问题时,请花一些时间来问它,清理它。例如,为什么要包含注释掉的代码?

第二个旁注。以下代码没有考虑哪些消息被“标记”为应该删除。你不应该查找索引吗?n如果用户选择了项目,您总是会删除第一个项目n,但是如果他选择了n最后一个项目怎么办?

if (cbxInbox.CheckedItems.Count > 1)
{
    for (int i = 1; i <= cbxInbox.CheckedItems.Count; i++)
    {
        client.DeleteMessage(i + 1);
    }
}

希望能帮助到你。

于 2013-08-14T13:36:15.950 回答