#include #include #include #include #include #include #include #include #define SRV_PORT 110 #define SRV_ADDR "200.x.x.x" #define TAMPOPBUF 512 /* maximo tamaƱo de respuesta (RFC1939) */ #define archivo "ffm" int main (void){ struct sockaddr_in saddr; int ds_srv; int nbr; int pid; char buffer[TAMPOPBUF]; char buffer2[TAMPOPBUF]; char buff_err[TAMPOPBUF]; char *mensaje; char *mensajet; char origen[50]; char destino[50]; char msg_ready_srv[]="<"; char *timestamp; char *user_pop= "misusuario@midominio.org"; char *pass_pop="mipassword"; int fm; //creamos nuestro socket if ((ds_srv=socket(PF_INET,SOCK_STREAM,0)) < 0){ perror("Error en el socket\n"); } saddr.sin_family = AF_INET; saddr.sin_port =htons(SRV_PORT); saddr.sin_addr.s_addr=htonl(INADDR_ANY); if (!inet_aton(SRV_ADDR, &saddr.sin_addr)) { perror("Error en el inet_aton \n"); } if (connect(ds_srv, (struct sockaddr *) &saddr, sizeof(saddr))){ perror("Error connect\n"); } if ((nbr = read(ds_srv,buffer, TAMPOPBUF)) == -1 ){ perror("Error en leer\n"); } buffer[nbr] ='\0'; //mandamos el usuario sprintf(buffer, "%s","USER "); sprintf(buffer+5,"%s",user_pop); strcat(buffer,"\r\n"); write(ds_srv,buffer,strlen(buffer)); if ((nbr=read(ds_srv, buffer, TAMPOPBUF)) == -1){ perror("Error en leer\n"); } //mandamos el password sprintf(buffer, "%s","PASS "); sprintf(buffer+5, "%s",pass_pop); strcat(buffer,"\r\n"); write(ds_srv,buffer,strlen(buffer)); nbr = read(ds_srv, buffer, TAMPOPBUF); //obtenemos el mensaje 1 sprintf(buffer, "%s","RETR 1"); strcat(buffer,"\r\n"); write(ds_srv,buffer,strlen(buffer)); nbr = read(ds_srv, buffer, TAMPOPBUF); if (strncmp(buffer,"+OK",3) == 0){ //creamos nuestro fichero fm= open(archivo,O_RDWR | O_APPEND | O_CREAT, 0600); //leemos del buffer del socket lo datos y los escribimos en nuestro archivo while ((nbr=read(ds_srv, buffer, TAMPOPBUF)) > 0) write(fm,buffer,nbr); } //cerramos sesion con el servidor sprintf(buffer, "%s","QUIT"); strcat(buffer,"\r\n"); write(ds_srv,buffer,strlen(buffer)); close(fm); exit (0); }