Попытался осилить такое дело как отправка почты с авторизацией на SMTP Начал писать прогу .Логин проходит нормально а вот пароль какого то непринимает (код ошибки 535).Подскажите плз в что я не так сделал Код (Text): /* forprogman@mail.ru pass:progman */ #include <windows.h> #include "base64.h" #include <iostream.h> #include <conio.h> main() { int a,b; hostent *h; char *user="forprogman"; char *psw="progman"; char *Ip=new char[150]; char *in=new char[1000]; char *out=new char[1000]; char *b64=new char[1000]; SOCKET s;SOCKADDR_IN adr; WSADATA wsd; WSAStartup(MAKEWORD(1,1),&wsd); h=gethostbyname("smtp.mail.ru"); 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]); adr.sin_family=AF_INET; adr.sin_addr.s_addr =inet_addr(Ip); adr.sin_port = htons(25); s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); connect( s,(sockaddr *)&adr, sizeof(adr)); recv(s,in,1000,0); printf("%s",in,"\n"); memset(in,NULL,1000); strcpy(out,"EHLO server\n"); send(s,out,strlen(out),0); recv(s,in,1000,0); printf("%s",in,"\n"); memset(in,NULL,1000); memset(out,NULL,1000); strcpy(out,"AUTH LOGIN\n"); send(s,out,strlen(out),0); recv(s,in,1000,0); in+=3; base64_decode(in,strlen(in),b64,1000); printf("%s",b64,"\n"); memset(in,NULL,1000); memset(out,NULL,1000); memset(b64,NULL,1000); base64_encode(user,strlen(user),b64,a); strcat(b64,"\n"); send(s,b64,strlen(b64),NULL); recv(s,in,1000,0); memset(b64,NULL,1000); in+=3; base64_decode(in,strlen(in),b64,1000); printf("%s",b64,"\n"); memset(in,NULL,1000); memset(out,NULL,1000); memset(b64,NULL,1000); base64_encode(psw,strlen(psw),b64,b); strcat(b64,"\n"); send(s,b64,strlen(b64),0); recv(s,in,1000,0); printf("%s",in,"\n"); printf("%s",b64,"\n"); closesocket(s); WSACleanup(); getch(); } ЗЫ:файлик с ф-циями для работы с base64 прилагается
Вот собственно ответы сервера Код (Text): 220 mail.ru ESMTP Tue, 05 Feb 2008 14:53:15 +0300 250-mx27.mail.ru Hello server [195.189.234.244] 250-SIZE 31457280 250-8BITMIME 250-AUTH PLAIN LOGIN 250 PIPELINING Username: Password: 535 Incorrect authentication data Походу ему пароль почему то не нравится .Но ведь логин то оно нормально схавало!И ведь не ругается что "invalid base64 data" ,а просто пароль не принимает
AUTH PLAIN LOGIN логин и парль как ты передавал? там же не в чистом виде надо передвать? + Заметь что почтовые сервера некоторые требуют \r\n некоторые нет
А много пробовал? просто тебя мог добавить в список сервер, но ответил бы он тебе не 535. А пробуй поставить снифер - рекомендую CommView и глянут ьчто там аутлук скажем передает - т.е. соснифай всю смтп сессию
а зачем тебе авторизация, на mail.ru и так письма слать можно, без авторизации. Очень удобно все эти дела сетевые на LiveCD - Linux - ах изучать. У меня есть Suse старый. Там есть утилита mimencode, которая в base64 внаглядно преобразует. Так вот авторизацию примерно такими шагами можно изучать ... 1. Кодирую логин Код (Text): su-2.05a# echo -n ginger@example.ru | mimencode -b Z2luZ2VyQGV4YW1wbGUucnU= 2. ... пароль Код (Text): su-2.05a# echo -n my-secret-pass | mimencode -b bXktc2VjcmV0LXBhc3M= 3. Ну и сама отсылка Код (Text): su-2.05a# telnet localhost 25 Trying 127.0.0.1... Connected to localhost.localdomain. Escape character is '^]'. 220 smtp.example.ru ESMTP Exim 4.20 Fri, 05 Sep 2003 14:01:25 +0400 ehlo localhost 250-smtp.example.ru Hello localhost.localdomain [127.0.0.1] 250-SIZE 10485760 250-PIPELINING 250-AUTH PLAIN LOGIN CRAM-MD5 250 HELP auth login 334 VXNlcm5hbWU6 Z2luZ2VyQGV4YW1wbGUucnU= 334 UGFzc3dvcmQ6 bXktc2VjcmV0LXBhc3M= 235 Authentication succeeded quit 221 smtp.example.ru closing connection Connection closed by foreign host. Встречаешь непонятную ошибку, копируешь ее в googl и читаешь, ошибку эту народ уже бороли и тебе помогут. Конечно, можно и виндовыми способами, но когда-то ведь надо на эти *NIX - ы переходить. Ты же видишь что в виндой творится.
С мылом ру и яндексом авторизация какого то идет только через РОР3 Оо Кто нибудь знает бесплатный имейл сервис с нормальной поддержкой AUTH LOGIN ???