1

メールを既読(/ SEEN)としてInterIMAPでマークしようとしていますが、これは機能しません。デバッガーを使用してコードをステップ実行したところ、メールサーバーからの応答が「IMAP0078OKストアは読み取り専用メールボックスで無視されました。」であることがわかりました。これは、なぜ機能しないのかをほぼ教えてくれます。しかし、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

Seguecódigoajustadoquefuncionoupara 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 に答える