1

我正在尝试使用 InterIMAP 将电子邮件标记为已读 (/SEEN),但这不起作用。我用调试器单步执行了代码,发现邮件服务器的响应是“IMAP0078 OK Store 被只读邮箱忽略。”,这几乎告诉了我为什么它不起作用。但看起来没有办法告诉 InterIMAP 以读写方式打开连接。如果我使用 Thunderbird 之类的东西,我可以将消息设置为已读。

有谁知道我应该如何使用 InterIMAP 来实现我正在尝试的内容,或者如何更改源代码以便我能够将消息标记为已读?

4

2 回答 2

0

我能够通过对 Imap.cs 进行以下更改来解决这种情况

public void MarkMessageAsRead(IMAPMessage msg)
{
    string cmd = "UID STORE {0} +FLAGS (\\Seen)\r\n";
    ArrayList result = new ArrayList();
    SendAndReceive(String.Format(cmd, msg.Uid), ref result);
    if (result[0].ToString().ToLower().Contains("ok"))
        msg.Flags.New = false;
}

变成

 public void MarkMessageAsRead(IMAPMessage msg)
    {
        msg.Folder.Select();
        string cmd = "UID STORE {0} +FLAGS (\\Seen)\r\n";
        ArrayList result = new ArrayList();
        SendAndReceive(String.Format(cmd, msg.Uid), ref result);
        if (result[0].ToString().ToLower().Contains("ok"))
            msg.Flags.New = false;
        msg.Folder.Examine();
    }

不确定这是否是解决我的问题的最干净的方法,但总比没有好。

于 2010-03-22T12:48:38.637 回答
0

Segue código ajustado que funcionou para remover a mensagem da caixa IMAP GMAIL!

    public void DeleteMail(IMAPMessage msg)
    {
        msg.Folder.Select();
        string cmd = "UID STORE {0} +FLAGS (\\Deleted \\Seen)\r\n";
        ArrayList result = new ArrayList();
        SendAndReceive(String.Format(cmd, msg.Uid), ref result);

        int countResult = result.Count - 1;

        while (countResult >= 0)
        {
            if (result[countResult].ToString().ToLower().Contains("ok"))
            {
                msg.Flags.New = false;
                msg.Flags.Deleted = true;

                string cmd2 = "EXPUNGE\r\n";
                ArrayList result2 = new ArrayList();
                SendAndReceive(String.Format(cmd2, msg.Uid), ref result2);

                if (result2[0].ToString().ToLower().Contains("ok"))
                {
                    //Deu certo!!
                    msg.Folder.Examine();
                }

            }

            countResult--;
        }
    }
于 2016-03-23T01:37:37.277 回答