У меня есть код, который использует 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 я не вижу, что приводит к его провалу.
Спасибо @jstedfast за ответ. С моей стороны я был недосмотр, чтобы не включать мой метод SendReceive. – Tim
Если это исправлено, можете ли вы пометить мой ответ как принятый? Благодаря! – jstedfast
К сожалению, это не исправить. Я уже отправлял правильную информацию. Я просто не включил код, чтобы показать это, поэтому я обновил свой вопрос. – Tim