当我尝试删除一条消息时,它一次删除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时,它们不会显示在第一页上 有没有办法区分垃圾邮件和邮件?
答案 0 :(得分:1)
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);
}
}
希望它有所帮助。