当我尝试删除一条消息时,它会一次删除 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 时它们没有出现在第一页上 有没有办法区分垃圾邮件和消息?
最佳答案
Gmail 有一些有趣的 POP3 实现。下载消息后,下次不会显示。因此,您的问题很可能不是 OpenPop 删除了 4 条消息,而是您下载了 4 条消息,然后 Gmail 对您隐藏了这些消息。
作为旁注:下次你问问题时,请花点时间问它,清理它。例如,为什么包含注释掉的代码?
第二个旁注。下面的代码没有考虑哪些消息被“标记”为应该删除。你不应该查找索引吗?如果用户选择了 n
个项目,您总是会删除前 n
个项目,但是如果他选择了最后一个 n
个项目怎么办?
if (cbxInbox.CheckedItems.Count > 1)
{
for (int i = 1; i <= cbxInbox.CheckedItems.Count; i++)
{
client.DeleteMessage(i + 1);
}
}
希望对您有所帮助。
关于c# - OpenPop 删除消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18232849/