2016-10-11 1 views
2

У меня есть код, который использует POP3 для доступа к учетной записи электронной почты и поиска сообщений, которые были отправлены, но адрес не существует. После обработки я удаляю сообщение об ошибке. У меня есть один клиент, который может получать и обрабатывать сообщения, но не может их удалить. Они продолжают получать сообщение Error deleting message 1: -ERR The specified message is out of range.Не удается удалить сообщение электронной почты, используя POP3

Код для моего метода удаления приведен ниже. Это работает для большинства клиентов, и это довольно просто, поэтому я не уверен, почему он не работает.

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

Для 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; 
    } 

Индекс не берется непосредственно из полученной электронной почты, и соединение не будет закрыто до тех пор, после того, как метод удаления обработал. Поскольку для запуска этого метода необходимо отправить электронное письмо, и поскольку индекс работает от 1 до n, при отправлении 1 я не вижу, что приводит к его провалу.

ответ

1

Звонок SendReceive() выглядит неправильно. Я предполагаю, что он должен иметь {0} в строке формата. Другими словами, ваш код, вероятно, отправляет DELE вместо DELE 1.

+0

Спасибо @jstedfast за ответ. С моей стороны я был недосмотр, чтобы не включать мой метод SendReceive. – Tim

+0

Если это исправлено, можете ли вы пометить мой ответ как принятый? Благодаря! – jstedfast

+0

К сожалению, это не исправить. Я уже отправлял правильную информацию. Я просто не включил код, чтобы показать это, поэтому я обновил свой вопрос. – Tim

Смежные вопросы