2016-10-11 1 views
2

J'ai un code qui utilise POP3 pour accéder à un compte de messagerie et rechercher les messages qui ont été envoyés mais l'adresse n'existait pas. Après les avoir traités, je supprime le message d'échec. J'ai un client qui peut obtenir et traiter les messages, mais n'est pas en mesure de les supprimer. Ils continuent à recevoir le message Error deleting message 1: -ERR The specified message is out of range.Impossible de supprimer un e-mail à l'aide de POP3

Le code de ma méthode de suppression est ci-dessous. Cela fonctionne pour la plupart des clients, et est assez simple, donc je ne sais pas pourquoi cela ne fonctionne pas.

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; 
    } 

Pour la méthode SendReceive:

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; 
    } 

L'indice est pris directement à partir de l'e-mail reçu, et la connexion est pas fermé jusqu'à ce que la méthode de suppression a traité. Puisqu'il doit y avoir un e-mail retourné pour exécuter cette méthode, et puisque l'index s'exécute de 1 à n, avec un 1 étant envoyé, je ne vois pas ce qui cause l'échec.

Répondre

1

L'appel SendReceive() semble incorrect. Ma conjecture est qu'il devrait probablement avoir un {0} dans la chaîne de format. En d'autres termes, votre code envoie probablement DELE au lieu de DELE 1.

+0

Merci @jstedfast pour la réponse. C'était un oubli de ma part de ne pas inclure ma méthode SendReceive. – Tim

+0

Si cela était corrigé, pourriez-vous marquer ma réponse comme acceptée? Merci! – jstedfast

+0

Malheureusement, cela ne l'a pas résolu. J'envoyais déjà les informations correctes. Je n'avais tout simplement pas inclus le code pour le montrer, alors j'ai mis à jour ma question. – Tim