Проблема простой аутентификации SMTP с использованием C ++ - PullRequest
1 голос
/ 08 мая 2011

Используя MS Visual C ++ и Boost asio, я пытаюсь добавить возможность отправки электронной почты в приложение с использованием протокола SMTP.

Проблема возникает, когда я пытаюсь аутентифицировать соединение.Вот снимок ситуации, предполагающей попытки подключения к учетной записи на сервере поставщика 1 & 1, который использует собственный сервер с именем «nemesis».

( S : ответ сервераи C : это команда клиента) для целей тестирования, мы предполагаем, что пытаемся отправить сообщение от учетной записи sender@mysite.com на target@mysite.com

C:    connect with hostname <smtp.1and1.es> and port <587> 
S:    220 smtp.1and1.es (mreu1) Welcome to Nemesis ESMTP server
C:    EHLO mysite.com
S:    250-smtp.1and1.es
S:    250-STARTTLS
S:    250-AUTH LOGIN PLAIN
S:    250-AUTH=LOGIN PLAIN
S:    250-PIPELINING
S:    250-SIZE 120000000
S:    250 HELP
C:    AUTH LOGIN
S:    504 Unknown authentication mechanism

Насколько я знаю, сервер предлагает пользователю два режима аутентификации: LOGIN и PLAIN, и мы пытаемся использовать первый (наиболее часто используемый режим).

Предположительно, с этого моментасервер должен ответить с запросами имени пользователя и пароля.Например:

S:    334 VXNlcm5hbWU6
C:    avlsdkfj          <- Usename (base-64 encoded)
S:    334 UGFzc3dvcmQ6
C:    lkajsdfvlj        <- Password (base-64 encoded)

Я пробовал команду auth login (нижний регистр) и auth=login без успеха.

Я предполагал, что после получения доступа к остальной частиПроцесс стандартный.Это сказать как:

C:    "MAIL FROM:<....>\r\n"
S:    250 .....
C    "RCPT TO:  ..\r\n"
S:    250 ...
C:    "DATA\r\n"
S:    354 ...
C:    bla, bla, bla        <-  message- body
C:    \r\n.\r\n
S:    250 ...
C:    "QUIT\r\n"
S:    221 ...

1 Ответ

0 голосов
/ 09 мая 2011

Как обычно, иногда наиболее очевидной является последняя гипотеза.В моей проблеме я использовал простую команду

C: AUTH LOGIN

вместо

C: AUTH LOGIN\r\n

Обратите внимание, что вам не нужно добавлять \r\n при использовании Telnet в Windows.

Помните об использовании того же приложения при отправке закодированного имени пользователя и пароля.

Кстати, помимо полученных комментариев, страница Эрвина Хоффмана Учебник по аутентификации SMTP былаВеликая помощь мне.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...