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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Fallo al enviar email a servidor
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Fallo al enviar email a servidor  (Leído 1,489 veces)
Kaxperday


Desconectado Desconectado

Mensajes: 702


The man in the Middle


Ver Perfil WWW
Fallo al enviar email a servidor
« en: 19 Noviembre 2015, 11:22 am »

Buenas, encontré un código sobre como mandar emails entre varios, y este parecía el mejor, a pesar de que daba bastantes fallos al compilar conseguí arreglarlo y ya compila, le tengo que meter el servidor smtp (de hotmail, gmail etc) que lo tengo bien, luego la cuenta de ese servidor a la que vas a enviar el archivo (en caso de hotmail, micuenta@hotmail.com), y luego la cuenta que manda el archivo que ahí es donde tengo el problema, os dejo el código a ver si me podéis ayudar, porque me dice que lo ha mandado correctamente, pero nada llega al correo, el problema está en el correo que manda el mensaje no se que poner, he probado con mi isp pero tampoco.

Código
  1. #include <iostream>
  2. #include <string>
  3. #include <fstream>
  4. #include <winsock2.h>
  5. #define CRLF "\r\n"
  6. #pragma comment(lib, "ws2_32.lib")
  7. using namespace std;
  8.  
  9. void ShowUsage(void);
  10. void Check(int iStatus, char *szFunction);
  11. void ShowUsage(void)
  12. {
  13. cout << "Usage: SENDMAIL mailserv to_addr from_addr messagefile" << endl
  14. << "Example: SENDMAIL smtp.myisp.com rcvr@elsewhere.com my_id@mydomain.com message.txt" << endl;
  15.  
  16. exit(1);
  17. }
  18.  
  19. // Basic error checking for send() and recv() functions
  20. void Check(int iStatus, char *szFunction)
  21. {
  22. if ((iStatus != SOCKET_ERROR) && (iStatus))
  23. return;
  24.  
  25. cerr << "Error during call to " << szFunction << ": " << iStatus << " - " << GetLastError() << endl;
  26. }
  27.  
  28. int main()
  29. {
  30. int         iProtocolPort = 0;
  31. char        szSmtpServerName[64] = "";
  32. char        szToAddr[64] = "";
  33. char        szFromAddr[64] = "";
  34. char        szBuffer[4096] = "";
  35. char        szLine[255] = "";
  36. char        szMsgLine[255] = "";
  37. SOCKET      hServer;
  38. WSADATA     WSData;
  39. LPHOSTENT   lpHostEntry;
  40. LPSERVENT   lpServEntry;
  41. SOCKADDR_IN SockAddr;
  42.  
  43. // Check for four command-line args
  44. //ShowUsage();
  45.  
  46. // Load command-line args
  47. strcpy(szSmtpServerName, "smtp.live.com");//smtp de hotmail
  48. strcpy(szToAddr, "mirealemail@hotmail.com");//mi email real de hotmail
  49. strcpy(szFromAddr, "micasa@noseque.com");//mi direcion ip?dominio?isp? que poner aqui
  50.  
  51. // Create input stream for reading email message file
  52. //ifstream MsgFile(argv[4]);
  53.  
  54. // Attempt to intialize WinSock (1.1 or later)
  55. if (WSAStartup(MAKEWORD(1, 1), &WSData))
  56. {
  57. cout << "Cannot find Winsock v" << 1 << "." << 1 << " or later!" << endl;
  58.  
  59. return 1;
  60. }
  61.  
  62. // Lookup email server's IP address.
  63. lpHostEntry = (hostent*)gethostbyname(szSmtpServerName);
  64. if (!lpHostEntry)
  65. {
  66. cout << "Cannot find SMTP mail server " << szSmtpServerName << endl;
  67.  
  68. return 1;
  69. }
  70.  
  71. // Create a TCP/IP socket, no specific protocol
  72. hServer = socket(PF_INET, SOCK_STREAM, 0);
  73. if (hServer == INVALID_SOCKET)
  74. {
  75. cout << "Cannot open mail server socket" << endl;
  76.  
  77. return 1;
  78. }
  79. // Get the mail service port
  80. lpServEntry = (servent*)getservbyname("mail", 0);
  81.  
  82. // Use the SMTP default port if no other port is specified
  83. if (!lpServEntry)
  84. iProtocolPort = htons(IPPORT_SMTP);
  85. else
  86. iProtocolPort = lpServEntry->s_port;
  87.  
  88. // Setup a Socket Address structure
  89. SockAddr.sin_family = AF_INET;
  90. SockAddr.sin_port = iProtocolPort;
  91. SockAddr.sin_addr = *((LPIN_ADDR)*lpHostEntry->h_addr_list);
  92.  
  93. // Connect the Socket
  94. if (connect(hServer, (PSOCKADDR)&SockAddr, sizeof(SockAddr)))
  95. {
  96. cout << "Error connecting to Server socket" << endl;
  97.  
  98. return 1;
  99. }
  100.  
  101. // Receive initial response from SMTP server
  102. Check(recv(hServer, szBuffer, sizeof(szBuffer), 0), "recv() Reply");
  103.  
  104. // Send HELO server.com
  105. sprintf(szMsgLine, "HELO %s%s", szSmtpServerName, CRLF);
  106. Check(send(hServer, szMsgLine, strlen(szMsgLine), 0), "send() HELO");
  107. Check(recv(hServer, szBuffer, sizeof(szBuffer), 0), "recv() HELO");
  108.  
  109. // Send MAIL FROM: <sender@mydomain.com>
  110. sprintf(szMsgLine, "MAIL FROM:<%s>%s", szFromAddr, CRLF);
  111. Check(send(hServer, szMsgLine, strlen(szMsgLine), 0), "send() MAIL FROM");
  112. Check(recv(hServer, szBuffer, sizeof(szBuffer), 0), "recv() MAIL FROM");
  113.  
  114. // Send RCPT TO: <receiver@domain.com>
  115. sprintf(szMsgLine, "RCPT TO:<%s>%s", szToAddr, CRLF);
  116. Check(send(hServer, szMsgLine, strlen(szMsgLine), 0), "send() RCPT TO");
  117. Check(recv(hServer, szBuffer, sizeof(szBuffer), 0), "recv() RCPT TO");
  118.  
  119. // Send DATA
  120. sprintf(szMsgLine, "DATA%s", CRLF);
  121. Check(send(hServer, szMsgLine, strlen(szMsgLine), 0), "send() DATA");
  122. Check(recv(hServer, szBuffer, sizeof(szBuffer), 0), "recv() DATA");
  123. sprintf(szMsgLine, "%s%s", "HOLA PROBANDO A ENVIAR UN EMAIL", CRLF);
  124. Check(send(hServer, szMsgLine, strlen(szMsgLine), 0), "send() message-line");
  125.  
  126. // Send blank line and a period
  127. sprintf(szMsgLine, "%s.%s", CRLF, CRLF);
  128. Check(send(hServer, szMsgLine, strlen(szMsgLine), 0), "send() end-message");
  129. Check(recv(hServer, szBuffer, sizeof(szBuffer), 0), "recv() end-message");
  130.  
  131. // Send QUIT
  132. sprintf(szMsgLine, "QUIT%s", CRLF);
  133. Check(send(hServer, szMsgLine, strlen(szMsgLine), 0), "send() QUIT");
  134. Check(recv(hServer, szBuffer, sizeof(szBuffer), 0), "recv() QUIT");
  135.  
  136. // Report message has been sent
  137. cout << "Sent " << "ARCHIVO" << " as email message to " << szToAddr << endl;
  138.  
  139. // Close server socket and prepare to exit.
  140. closesocket(hServer);
  141.  
  142. WSACleanup();
  143.  
  144. return 0;
  145. }

Saludos y gracias.

Edito: Bueno bueno, tras mucho leer. Parece que todo indica a que tengamos que loguearnos en una cuenta conocida que tengamos en un servidor smtp, y desde allí mandar un email a la cuenta que queramos dentro o fuera del dominio.

Esto sabía que se podía hacer, pero es lo último a lo que quería llegar, porque imaginaros una app que manda emails con notificaciones, necesitaría contener la cuenta que va a mandar el mensaje en su interior y la podrían extraer con ingeniería inversa y acceder al usuario y contraseña del correo que usa la app para mandar los emails.

Yo estoy intentando buscar otra forma de mandarlo, a través de nuestra ip y nuestro servidor de isp o algo así, o levantar nuestro propio servidor smtp y mandar mensajes con nuestra isp como dominio y nuestra ip como usuario, no sé, desconozco el tema, estoy buscando ideas.

¿Alguna alternativa a que tenga que loguearme en un server smtp(gmail, hotmail...), y mandarlo desde el tras loguearme?, estaría bien por muchos motivos.

Saludos.

Edito: De hecho entonces no entiendo este código que parecía funcionar cuando lo busqué, pues aquí no introduce la contraseña, no se loguea en la cuenta para mandar el email, aunque tampoco debería hacerlo si le estamos diciendo mande a un destinatario, y si nosotros estamos usando nuestro dominio como origen del mensaje.

Creo que el protocolo también falla, de el ejemplo, ¿no?. ¿Pero entonces necesito estrictamente autentificarme en otro correo ya conodico y enviarlo desde ahí o no?.


« Última modificación: 19 Noviembre 2015, 11:59 am por Kaxperday » En línea

Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
enviar email « 1 2 »
PHP
BriaNUR 10 9,420 Último mensaje 8 Julio 2007, 05:43 am
por дٳŦ٭
Enviar email a través de movil conectado a servidor CentOs
GNU/Linux
dark_fidodido 0 2,848 Último mensaje 25 Enero 2011, 10:14 am
por dark_fidodido
Enviar SMS a través de email
Dispositivos Móviles (PDA's, Smartphones, Tablets)
despistado 2 5,903 Último mensaje 1 Febrero 2011, 16:26 pm
por despistado
Enviar Log al Email
Análisis y Diseño de Malware
misterioy 1 3,094 Último mensaje 2 Octubre 2011, 02:03 am
por skapunky
Enviar email
Scripting
lochapa 5 4,020 Último mensaje 8 Diciembre 2013, 23:02 pm
por Eleкtro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines