2016-04-01 10 views
0

У меня есть приложение, которое отслеживает почтовый ящик Exchange Server для входящей почты. Он работает с другими системами, но для одного из наших клиентов мы получаем ошибку: -ERR Command is not valid in this state.Получение команды не действительна Ошибка входа в Exchange Server с использованием POP 3

Я не думаю, что это имеет какое-то отношение к самому коде, потому что мы получаем то же сообщение об ошибке, когда мы пытаемся войти в систему, используя Telnet. Ошибка возникает, когда Пользователь передан. Для справки, я добавил свой код для входа ниже.

try 
{ 
    tcpClient = new TcpClient(Host, Port); 
} 
catch (SocketException e) { ... } 
String response = ""; 

try 
{ 
    streamReader = GetStreamReader(tcpClient); 
    response = streamReader.ReadLine(); 
    if (response.StartsWith("+OK")) 
    { 
     response = SendReceive("USER ", UserName.Trim() + "@" + Domain.Trim()); 
     if (response.StartsWith("+OK")) 
      response = SendReceive("PASS ", Password); 
    } 
} 
catch (Exception e) { ... } 

И 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

Некоторые серверы POP3 не позволяют команда USER не будет использоваться, пока/если соединение не используется SSL.

Другими словами, вам может потребоваться сначала использовать команду STLS (если она поддерживается), или, в противном случае, вам может потребоваться использовать механизм аутентификации SASL.

Проверьте результаты команды CAPA для получения дополнительной информации.

О, и бесстыдная штепсельная вилка: используйте MailKit вместо того, чтобы пытаться катиться самостоятельно.

+0

Благодарим за отзыв. Мы уже проверили, и у них нет SSL. Мы подключаемся к порту 110. Похоже, MailKit будет намного проще, но моя компания предпочитает создавать все свои собственные коды. – Tim

+0

Если вам нужна дополнительная помощь, вам необходимо как минимум предоставить список возможностей, поддерживаемых сервером POP3 (т. Е. Результаты команды CAPA). – jstedfast

+0

Возможно, вы также захотите ознакомиться с спецификацией для расширений POP3: https://www.rfc-editor.org/rfc/rfc2449.txt – jstedfast