c # Ошибка отправки SMTP-аутентификации Синтаксическая ошибка в параметре или аргументах - PullRequest
3 голосов
/ 12 сентября 2011

У меня есть метод в C #, который отправляет электронную почту. Работает нормально и работает нормально два года.

Я столкнулся с проблемой с одним SMTP-сервером. Я просмотрел разговор по TCP с помощью SmartSniff и обнаружил проблемное рукопожатие:

после команды

AUTH login dGJp

Я получаю сообщение об ошибке

501 Синтаксическая ошибка в параметрах или аргументах

С другой стороны, когда я отправляю почту из Outlook с той же учетной записью, указанная выше команда разделяется на две части:

AUTH LOGIN

334 VXNlcm5hbWU6

dGJp

Как вы можете видеть, при отправке из outlook клиент делает паузу перед отправкой имени пользователя и ответов сервера с вопросом «Имя пользователя:» (VXNlcm5hbWU6) После этой строки не произошло ошибок. Затем сервер запрашивает пароль и отвечает 235 Аутентификация успешна

Кто-нибудь сталкивался с этой проблемой?

Я пробовал на разных почтовых серверах и все работает нормально при аутентификации в одной строке (первый пример). По какой-то причине этому SMTP-серверу это не нравится.

Есть идеи?

1 Ответ

1 голос
/ 27 октября 2011

Это на самом деле не помогает, но AUTH LOGIN устарел, нестандартный метод, он не имеет формальной спецификации.Существует информационный RFC, пытающийся документировать его для исторических целей и спецификации Microsoft.Они противоречат друг другу..Net, кажется, реализует это способом Microsoft, в то время как сервер, с которым вы столкнулись, реализует это иначе.(Какое серверное программное обеспечение оно использует кстати?) Если возможно, используйте метод AUTH PLAIN, который является стандартным.

...