OpenPop删除邮件

时间:2013-08-14 13:18:37

标签: c# visual-studio email pop3 openpop

当我尝试删除一条消息时,它一次删除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时,它们不会显示在第一页上 有没有办法区分垃圾邮件和邮件?

1 个答案:

答案 0 :(得分:1)

Gmail有一些有趣的POP3实现。下载邮件后,下次不会显示该邮件。所以你的问题很可能不是OpenPop删除了4条消息,而是你下载了4条Gmail然后隐藏的消息。

请参阅What non-standard behaviour features does Gmail exhibit, when it is programmatically used as a POP3 server?

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

第二个侧面说明。以下代码未考虑哪些消息被“标记”为应删除。你不应该查找索引吗?如果用户选择了n项,则会始终删除第一个n项,但如果他选择n最后一项,该怎么办?

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

希望它有所帮助。