elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Aprendiendo a programar SMTP
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Aprendiendo a programar SMTP  (Leído 3,577 veces)
x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Aprendiendo a programar SMTP
« en: 5 Septiembre 2012, 04:27 am »

Buenas alguien podria ayudarme con esto XD
Siempre me tome poco interes en network programming ( Sockets, TCP, etc ) pero siempre he querido enviar un email usando SMTP,
segun tengo entendido con SMTP se puede enviar a cualquier tipo de cuenta no? ( gmail, hotmail , yahoo , etc )
y encontre este codigo en la red, pero creo que no tengo algunas librerias... pero no se supone que SMTP es "portable" ?
bueno honestamente sé nada sobre ello, y por ahora no estoy del todo interesado al aprendizaje profundo sobre ello, así que me gustaria
saber quien puede decirme donde debo leer, o que buscar solamente para aprender a programar un SMTP XD y enviar un email


Código
  1.     #include<iostream>
  2.     #include <sys/types.h>
  3.     #include <sys/socket.h>
  4.     #include <netinet/in.h>
  5.     #include <netdb.h>
  6.     #include <stdio.h>
  7.     using namespace std;
  8.     #define HELO "HELO 192.168.1.1\r\n"
  9.     #define DATA "DATA\r\n"
  10.     #define QUIT "QUIT\r\n"
  11.  
  12.    //#define h_addr h_addr_list[0]
  13.    //FILE *fin;
  14.    int sock;
  15.    struct sockaddr_in server;
  16.    struct hostent *hp, *gethostbyname();
  17.    char buf[BUFSIZ+1];
  18.    int len;
  19.    char *host_id="192.168.1.10";
  20.    char *from_id="rameshgoli@domain.com";
  21.    char *to_id="rameshgoli@domain.com";
  22.    char *sub="testmail\r\n";
  23.    char wkstr[100]="hello how r u\r\n";
  24.  
  25.    /*=====Send a string to the socket=====*/
  26.  
  27.    void send_socket(char *s)
  28.    {
  29.        write(sock,s,strlen(s));
  30.        write(1,s,strlen(s));
  31.        //printf("Client:%s\n",s);
  32.    }
  33.  
  34.    //=====Read a string from the socket=====*/
  35.  
  36.    void read_socket()
  37.    {
  38.        len = read(sock,buf,BUFSIZ);
  39.        write(1,buf,len);
  40.      //printf("Server:%s\n",buf);
  41.    }
  42.  
  43.    /*=====MAIN=====*/
  44.    int main(int argc, char* argv[])
  45.    {
  46.  
  47.    /*=====Create Socket=====*/
  48.    sock = socket(AF_INET, SOCK_STREAM, 0);
  49.    if (sock==-1)
  50.    {
  51.     perror("opening stream socket");
  52.     exit(1);
  53.    }
  54.    else
  55.      cout << "socket created\n";
  56.    /*=====Verify host=====*/
  57.    server.sin_family = AF_INET;
  58.    hp = gethostbyname(host_id);
  59.    if (hp==(struct hostent *) 0)
  60.    {
  61.     fprintf(stderr, "%s: unknown host\n", host_id);
  62.     exit(2);
  63.    }
  64.  
  65.    /*=====Connect to port 25 on remote host=====*/
  66.    memcpy((char *) &server.sin_addr, (char *) hp->h_addr, hp->h_length);
  67.    server.sin_port=htons(25); /* SMTP PORT */
  68.    if (connect(sock, (struct sockaddr *) &server, sizeof server)==-1)
  69.    {
  70.     perror("connecting stream socket");
  71.     exit(1);
  72.    }
  73.    else
  74.      cout << "Connected\n";
  75.    /*=====Write some data then read some =====*/
  76.    read_socket(); /* SMTP Server logon string */
  77.    send_socket(HELO); /* introduce ourselves */
  78.    read_socket(); /*Read reply */
  79.    send_socket("MAIL FROM: ");
  80.    send_socket(from_id);
  81.    send_socket("\r\n");
  82.    read_socket(); /* Sender OK */
  83.    send_socket("VRFY ");
  84.    send_socket(from_id);
  85.    send_socket("\r\n");
  86.    read_socket(); // Sender OK */
  87.    send_socket("RCPT TO: "); /*Mail to*/
  88.    send_socket(to_id);
  89.    send_socket("\r\n");
  90.    read_socket(); // Recipient OK*/
  91.    send_socket(DATA);// body to follow*/
  92.    send_socket("Subject: ");
  93.    send_socket(sub);
  94.    read_socket(); // Recipient OK*/
  95.    send_socket(wkstr);
  96.    send_socket(".\r\n");
  97.    read_socket();
  98.    send_socket(QUIT); /* quit */
  99.    read_socket(); // log off */
  100.  
  101.    //=====Close socket and finish=====*/
  102.    close(sock);
  103.    exit(0);
  104.  }



En línea

BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: Aprendiendo a programar SMTP
« Respuesta #1 en: 5 Septiembre 2012, 05:30 am »

Aquí te lo dejo de nuevo

http://tools.ietf.org/html/rfc2821

Dulces Lunas!¡.


En línea

The Dark Shadow is my passion.
x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: Aprendiendo a programar SMTP
« Respuesta #2 en: 5 Septiembre 2012, 06:52 am »

Yo ya te envie por PM la url del formato SMTP no hace mucho...

Dulces Lunas!¡.

Cierto XD solo lei lo principio y lueg no lo continue :P es que honestamente no me llama nada la atencion pero es tan indispensable XD
ahora que lo veo bien esto trata sobre el SMTP pero creo que no lo aplica a C/C++ verdad? y es que estoy buscando algo introductorio
así como que librerias debo usar, funciones, etc
En línea

BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: Aprendiendo a programar SMTP
« Respuesta #3 en: 5 Septiembre 2012, 09:43 am »

Lo que te deje es el Standart del SMTP te guste o no así vas a estar encontrando información VERÍDICA y puede ser procesada esa información de diversas maneras, los diversos servidores SMTP, sus programadores tuvieron que ver este tipo de documentos que no están orientados a ningún lenguaje mas que para que quien lo lea lo comprenda y lo aplique tal cual pasa con la MATEMÁTICA.

Habitualmente estos documentos te dan un ejemplo(s) pero no orientados a la programación si no a tu compresión; Las librerías a incluir y las funciones de DEBES CREAR por ti mismo o copiar algunas ya realizadas es otra cosa muy ajena a un formato, en este caso el formato del protocolo del SMTP...

Sera mejor que practiques con Sockets antes de meterte con algo así o no sabrás ni que estas haciendo.

Aquí están unos escenarios (ejemplos) donde la S: significa lo que arroja el servidor y C: lo que arroja el cliente...

http://tools.ietf.org/html/rfc2821#appendix-D.1

Dulces Lunas!¡.

EI: juntando mensajes.

Busca aquí el formato documento que necesites...

http://tools.ietf.org/rfc/index

Este es del año (2012).
RFC6710 Simple Mail Transfer Protocol Extension for Message Transfer
Priorities. A. Melnikov, K. Carlberg. August 2012. (Format: TXT=59966 bytes) (Status: PROPOSED STANDARD)

Dulces Lunas!¡.
« Última modificación: 5 Septiembre 2012, 11:50 am por Eternal Idol » En línea

The Dark Shadow is my passion.
x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: Aprendiendo a programar SMTP
« Respuesta #4 en: 6 Septiembre 2012, 05:08 am »

Gracias por la Info BlackZeroX :)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Aprendiendo a programar en c++ un poco duro « 1 2 3 4 »
Programación C/C++
dairus20 38 16,261 Último mensaje 28 Febrero 2011, 23:15 pm
por Eternal Idol
[Tutorial] Aprendiendo a Programar En Java 7 -- Capitulo 1
Java
kaltorak 0 2,095 Último mensaje 5 Agosto 2013, 11:55 am
por kaltorak
Estoy aprendiendo a programar web[Ayuda]
Desarrollo Web
jorpumon 2 2,549 Último mensaje 7 Agosto 2013, 23:12 pm
por moi_realine
Aprendiendo a programar
Programación C/C++
Joan.Agusti 1 1,528 Último mensaje 8 Mayo 2016, 16:28 pm
por ivancea96
La computación como una asignatura más: aprendiendo a programar desde los 6 años
Noticias
wolfbcn 4 1,686 Último mensaje 31 Mayo 2016, 15:20 pm
por AlbertoBSD
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines