Не получается авторизоваться на SMTP

Тема в разделе "WASM.NETWORKS", создана пользователем _nic, 5 фев 2008.

  1. _nic

    _nic New Member

    Публикаций:
    0
    Регистрация:
    4 фев 2007
    Сообщения:
    372
    Попытался осилить такое дело как отправка почты с авторизацией на SMTP :) Начал писать прогу .Логин проходит нормально а вот пароль какого то непринимает (код ошибки 535).Подскажите плз в что я не так сделал
    Код (Text):
    1. /*
    2. forprogman@mail.ru
    3. pass:progman
    4. */
    5. #include <windows.h>
    6. #include "base64.h"
    7. #include <iostream.h>
    8. #include <conio.h>
    9. main()
    10. {
    11. int a,b;
    12. hostent *h;
    13. char *user="forprogman";
    14. char *psw="progman";
    15. char *Ip=new char[150];
    16. char *in=new char[1000];
    17. char *out=new char[1000];
    18. char *b64=new char[1000];
    19. SOCKET s;SOCKADDR_IN adr;
    20. WSADATA wsd;
    21. WSAStartup(MAKEWORD(1,1),&wsd);
    22. h=gethostbyname("smtp.mail.ru");
    23. sprintf(Ip,"%d.%d.%d.%d",(unsigned char)h->h_addr_list[0][0],(unsigned char)h->h_addr_list[0][1],(unsigned char)h->h_addr_list[0][2],(unsigned char)h->h_addr_list[0][3]);
    24. adr.sin_family=AF_INET;
    25. adr.sin_addr.s_addr =inet_addr(Ip);
    26. adr.sin_port = htons(25);
    27. s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    28. connect( s,(sockaddr *)&adr, sizeof(adr));
    29. recv(s,in,1000,0);
    30. printf("%s",in,"\n");
    31. memset(in,NULL,1000);
    32. strcpy(out,"EHLO server\n");
    33. send(s,out,strlen(out),0);
    34. recv(s,in,1000,0);
    35. printf("%s",in,"\n");
    36. memset(in,NULL,1000);
    37. memset(out,NULL,1000);
    38. strcpy(out,"AUTH LOGIN\n");
    39. send(s,out,strlen(out),0);
    40. recv(s,in,1000,0);
    41. in+=3;
    42. base64_decode(in,strlen(in),b64,1000);
    43. printf("%s",b64,"\n");
    44. memset(in,NULL,1000);
    45. memset(out,NULL,1000);
    46. memset(b64,NULL,1000);
    47. base64_encode(user,strlen(user),b64,a);
    48. strcat(b64,"\n");
    49. send(s,b64,strlen(b64),NULL);
    50. recv(s,in,1000,0);
    51. memset(b64,NULL,1000);
    52. in+=3;
    53. base64_decode(in,strlen(in),b64,1000);
    54. printf("%s",b64,"\n");
    55. memset(in,NULL,1000);
    56. memset(out,NULL,1000);
    57. memset(b64,NULL,1000);
    58. base64_encode(psw,strlen(psw),b64,b);
    59. strcat(b64,"\n");
    60. send(s,b64,strlen(b64),0);
    61. recv(s,in,1000,0);
    62. printf("%s",in,"\n");
    63. printf("%s",b64,"\n");
    64. closesocket(s);
    65. WSACleanup();
    66. getch();
    67. }
    ЗЫ:файлик с ф-циями для работы с base64 прилагается
     
  2. Cock

    Cock New Member

    Публикаций:
    0
    Регистрация:
    9 фев 2007
    Сообщения:
    148
    пиши в лог смтп-сессию, и присылай, зачем нам твои коды и так глоза болят.
     
  3. _nic

    _nic New Member

    Публикаций:
    0
    Регистрация:
    4 фев 2007
    Сообщения:
    372
    Вот собственно ответы сервера
    Код (Text):
    1. 220 mail.ru ESMTP Tue, 05 Feb 2008 14:53:15 +0300
    2. 250-mx27.mail.ru Hello server [195.189.234.244]
    3. 250-SIZE 31457280
    4. 250-8BITMIME
    5. 250-AUTH PLAIN LOGIN
    6. 250 PIPELINING
    7. Username:
    8. Password:
    9. 535 Incorrect authentication data
    Походу ему пароль почему то не нравится .Но ведь логин то оно нормально схавало!И ведь не ругается что "invalid base64 data" ,а просто пароль не принимает :dntknw:
     
  4. Cock

    Cock New Member

    Публикаций:
    0
    Регистрация:
    9 фев 2007
    Сообщения:
    148
    AUTH PLAIN LOGIN
    логин и парль как ты передавал?
    там же не в чистом виде надо передвать? + Заметь что почтовые сервера некоторые требуют \r\n некоторые нет
     
  5. _nic

    _nic New Member

    Публикаций:
    0
    Регистрация:
    4 фев 2007
    Сообщения:
    372
    Пробовал и \r\n .Логин и пароль естественно кодируются в base64
     
  6. Cock

    Cock New Member

    Публикаций:
    0
    Регистрация:
    9 фев 2007
    Сообщения:
    148
    А много пробовал? просто тебя мог добавить в список сервер, но ответил бы он тебе не 535. А пробуй поставить снифер - рекомендую CommView и глянут ьчто там аутлук скажем передает - т.е. соснифай всю смтп сессию
     
  7. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    а зачем тебе авторизация, на mail.ru и так письма слать можно, без авторизации.

    Очень удобно все эти дела сетевые на LiveCD - Linux - ах изучать.
    У меня есть Suse старый.
    Там есть утилита mimencode, которая в base64 внаглядно преобразует.
    Так вот авторизацию примерно такими шагами
    можно изучать ...
    1. Кодирую логин
    Код (Text):
    1. su-2.05a# echo -n ginger@example.ru | mimencode -b
    2. Z2luZ2VyQGV4YW1wbGUucnU=
    2. ... пароль
    Код (Text):
    1. su-2.05a# echo -n my-secret-pass | mimencode -b
    2. bXktc2VjcmV0LXBhc3M=
    3. Ну и сама отсылка
    Код (Text):
    1.         su-2.05a# telnet localhost 25
    2.         Trying 127.0.0.1...
    3.         Connected to localhost.localdomain.
    4.         Escape character is '^]'.
    5.         220 smtp.example.ru ESMTP Exim 4.20 Fri, 05 Sep 2003 14:01:25 +0400
    6.         ehlo localhost
    7.         250-smtp.example.ru Hello localhost.localdomain [127.0.0.1]
    8.         250-SIZE 10485760
    9.         250-PIPELINING
    10.         250-AUTH PLAIN LOGIN CRAM-MD5
    11.         250 HELP
    12.         auth login
    13.         334 VXNlcm5hbWU6
    14.         Z2luZ2VyQGV4YW1wbGUucnU=
    15.         334 UGFzc3dvcmQ6
    16.         bXktc2VjcmV0LXBhc3M=
    17.         235 Authentication succeeded
    18.         quit
    19.         221 smtp.example.ru closing connection
    20.         Connection closed by foreign host.
    Встречаешь непонятную ошибку, копируешь ее в googl и читаешь,
    ошибку эту народ уже бороли и тебе помогут.

    Конечно, можно и виндовыми способами, но когда-то ведь надо на эти *NIX - ы переходить. Ты же видишь что в виндой творится.
     
  8. _nic

    _nic New Member

    Публикаций:
    0
    Регистрация:
    4 фев 2007
    Сообщения:
    372
    С мылом ру и яндексом авторизация какого то идет только через РОР3 Оо
    Кто нибудь знает бесплатный имейл сервис с нормальной поддержкой AUTH LOGIN ???
     
  9. ch1pa

    ch1pa New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2007
    Сообщения:
    38
    mail.tut.by