(cuando no lo tenía xD) ,las empresas que llevan los servers de correo tienen unas políticas férreas
en cuanto a la seguridad, por eso ya no se puede hacer lo de antaño.. ¡Pues yo sí pude! reuniendo códigos
,usando sockets tenemos la forma de enviar en RAW los datos y forzar al server de gaymail.
Sin más qu decir ahí va el código en c (necesitas linkear winsock)Recomiendo Devcpp (gcc)
El enviarmail ya compilado xD
Edit: ya n funciona ,éstas cosas no se deben publicar.
#include <stdio.h> #include <stdlib.h> #include <windows.h> //para sockets #define server "gmail-smtp-in.l.google.com" #define Log "logit.txt" #define esperatim 100 int enviarmail (char *mailserver, char *emailto, char *emailfrom, char *emailasunto, char *emailmensaje) { SOCKET socketmail; WSADATA datawsa; FILE *ellog; #define bufsize 300 struct hostent *host; //estructura para gethostbyname struct sockaddr_in dest_addr; char almacenar[2500]; char *Bufferec = (char*) malloc(bufsize+1); ellog=fopen(Log,"a+"); int bytesEnv; int fallo; if (WSAStartup(0x202,&datawsa) == SOCKET_ERROR) { fputs("WSAStartup ha fallado al iniciar",ellog); WSACleanup(); return -1; } if ( (host=gethostbyname(mailserver)) == NULL) { perror("gethostbyname"); exit(1); } memset(&dest_addr,0,sizeof(dest_addr)); memcpy(&(dest_addr.sin_addr),host->h_addr,host->h_length); dest_addr.sin_family= host->h_addrtype; dest_addr.sin_port= htons(25); //Dirección destino if ((socketmail=socket(AF_INET,SOCK_STREAM,0)) < 0) { perror("socket"); exit(1); } //Aquí empieza la conexión fputs("Connecting....\n",ellog); if (connect(socketmail, (struct sockaddr *)&dest_addr,sizeof(dest_addr)) == -1){ perror("connect"); exit(1); } sleep(esperatim); fallo=recv(socketmail,Bufferec,bufsize,0);Bufferec[ fallo] = '\0'; fputs(Bufferec,ellog); strcpy(almacenar,"helo mi.culo.com\n"); fputs(almacenar,ellog); bytesEnv=send(socketmail,almacenar,strlen(almacenar),0); sleep(esperatim); fallo=recv(socketmail,Bufferec,bufsize,0);Bufferec[fallo] = '\0'; fputs(Bufferec,ellog); strcpy(almacenar,"helo google.com\n"); fputs(almacenar,ellog); bytesEnv=send(socketmail,almacenar,strlen(almacenar),0); sleep(esperatim); fallo=recv(socketmail,Bufferec,bufsize,0);Bufferec[fallo] = '\0'; fputs(Bufferec,ellog); strcpy(almacenar,"MAIL FROM:<"); strncat(almacenar,emailfrom,strlen(emailfrom)); strncat(almacenar,">\n",3); fputs(almacenar,ellog); bytesEnv=send(socketmail,almacenar,strlen(almacenar),0); sleep(esperatim); fallo=recv(socketmail,Bufferec,bufsize,0);Bufferec[fallo] = '\0'; fputs(Bufferec,ellog); strcpy(almacenar,"RCPT TO:<"); strncat(almacenar,emailto,strlen(emailto)); strncat(almacenar,">\n",3); fputs(almacenar,ellog); bytesEnv=send(socketmail,almacenar,strlen(almacenar),0); sleep(esperatim); fallo=recv(socketmail,Bufferec,bufsize,0);Bufferec[fallo] = '\0'; fputs(Bufferec,ellog); strcpy(almacenar,"DATA\n"); fputs(almacenar,ellog); bytesEnv=send(socketmail,almacenar,strlen(almacenar),0); sleep(esperatim); fallo=recv(socketmail,Bufferec,bufsize,0);Bufferec[fallo] = '\0'; fputs(Bufferec,ellog); sleep(esperatim); strcpy(almacenar,"To:"); strcat(almacenar,emailto); strcat(almacenar,"\n"); strcat(almacenar,"From:"); strcat(almacenar,emailfrom); strcat(almacenar,"\n"); strcat(almacenar,"Subject:"); strcat(almacenar,emailasunto); strcat(almacenar,"\n"); strcat(almacenar,emailmensaje); strcat(almacenar,"\r\n.\r\n"); fputs(almacenar,ellog); bytesEnv=send(socketmail,almacenar,strlen(almacenar),0); sleep(esperatim); fallo=recv(socketmail,Bufferec,bufsize,0);Bufferec[fallo] = '\0'; fputs(Bufferec,ellog); strcpy(almacenar,"quit\n"); fputs(almacenar,ellog); bytesEnv=send(socketmail,almacenar,strlen(almacenar),0); sleep(esperatim); fallo=recv(socketmail,Bufferec,bufsize,0);Bufferec[fallo] = '\0'; fputs(Bufferec,ellog); fclose(ellog); #ifdef WIN32 closesocket(socketmail); WSACleanup(); #else close(socketmail); #endif system("color 0a && cls"); printf("Enviado xD \n"); } /*=========================================*/ //Aquí empieza el programa int main(int args, char **argv[]) { //Aquí recibe los argumentos de consola ,mas el mensaje a enviar lo envia if(args < 4) { printf("Modo de uso: enviarmail.exe destinatario origen Asunto \n"); system("pause && exit"); } if(args == 4){ int i = enviarmail(server, argv[1] ,argv[2],argv[3], "SUSTITUIR");} system("pause"); return 0; }