2016-10-11 8 views
2

POP3を使用して電子メールアカウントにアクセスし、送信されたメッセージは検索できますが、そのアドレスは存在しませんでした。それらを処理した後、私は失敗メッセージを削除します。メッセージを取得して処理できるクライアントが1人ありますが、メッセージを削除することはできません。彼らはメッセージを受け取り続けるError deleting message 1: -ERR The specified message is out of range.POP3を使用して電子メールメッセージを削除できません

私の削除方法のコードは以下の通りです。これは、ほとんどのクライアントで動作し、非常に単純なので、なぜ動作していないのか分かりません。 SendReceive方法について

public bool Delete(int index) 
    { 
     bool result = false; 
     String response = SendReceive("DELE ", index.ToString()); 
     if (response.StartsWith("+OK")) 
      result = true; 
     else 
      logger.Log("Error deleting message " + index + ": " + response, Verbose.LogImportant); 

     return result; 
    } 

は:削除方法は、処理した後まで

private String SendReceive(String command, String parameter) 
    { 
     String result = null; 
     try 
     { 
      String myCommand = command.ToUpper().Trim() + " " + parameter.Trim() + Environment.NewLine; 
      byte[] data = System.Text.Encoding.ASCII.GetBytes(myCommand.ToCharArray()); 
      tcpClient.GetStream().Write(data, 0, data.Length); 
      result = streamReader.ReadLine(); 
     } 
     catch { } // Not logged in... 
     return result; 
    } 

インデックスは、受信した電子メールから直接取得され、接続が閉じられていません。このメソッドを実行するために電子メールが返されなければならないので、インデックスは1からnまで実行され、1が送信されるので、何が失敗するのかはわかりません。

答えて

1

SendReceive()呼び出しが間違っています。おそらく、フォーマット文字列に{0}があるはずです。つまり、あなたのコードはおそらくDELE 1の代わりにDELEを送信しています。

+0

@jstedfastさんへの返信ありがとうございます。私のSendReceiveメソッドを含まないことは、私の見落としでした。 – Tim

+0

それが修正された場合、私の答えは受け入れられるとマークできますか?ありがとう! – jstedfast

+0

残念ながら、それはそれを修正しませんでした。私はすでに正しい情報を送っていました。私はちょうどそれを示すコードを含んでいなかったので、私は私の質問を更新しました。 – Tim

関連する問題