Linux - Correo utilizando SMTP

 
Vista:

Correo utilizando SMTP

Publicado por N (1 intervención) el 20/06/2001 16:45:30
Hola a todos:

Si alguien conoce algun codigo que me pueda servir de ejemplo para enviar un correo utilizando el protocolo SMTP de TCP/IP, se lo agradecería mucho. De preferencia en lenguaje C y que funcione bajo Linux.
De antemano gracias

N
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Enviar correo con código en C usando SMTP

Publicado por Alejandro (176 intervenciones) el 05/12/2023 00:13:07
¡Hola, N! Aquí tienes un ejemplo simple de código en C para enviar un correo utilizando el protocolo SMTP de TCP/IP. Este código utiliza la biblioteca OpenSSL para la comunicación segura con el servidor SMTP.

Asegúrate de tener la biblioteca OpenSSL instalada. Puedes hacerlo en Linux con el siguiente comando:

1
sudo yum install openssl openssl-devel   # Para sistemas basados en Red Hat

Ahora, el código de ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <openssl/ssl.h>
#include <openssl/err.h>
 
#define SERVER "smtp.example.com"
#define PORT 587
 
int main() {
    SSL_CTX *ctx;
    SSL *ssl;
    int sockfd;
 
    // Inicializar la biblioteca SSL
    SSL_library_init();
    SSL_load_error_strings();
 
    // Crear un contexto SSL
    ctx = SSL_CTX_new(TLS_client_method());
 
    // Crear un socket
    sockfd = socket(AF_INET, SOCK_STREAM, 0);
 
    // Configurar la conexión
    struct sockaddr_in server_addr;
    struct hostent *host;
 
    host = gethostbyname(SERVER);
 
    server_addr.sin_family = AF_INET;
    server_addr.sin_port = htons(PORT);
    server_addr.sin_addr = *((struct in_addr *)host->h_addr);
 
    // Conectar al servidor SMTP
    connect(sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr));
 
    // Configurar el contexto SSL para el socket
    ssl = SSL_new(ctx);
    SSL_set_fd(ssl, sockfd);
 
    // Establecer conexión segura
    SSL_connect(ssl);
 
    // Enviar comandos SMTP (ejemplo: iniciar sesión y enviar un correo)
    char buffer[1024];
 
    // Leer respuesta del servidor
    SSL_read(ssl, buffer, sizeof(buffer));
    printf("%s", buffer);
 
    // Autenticarse si es necesario
    // Enviar correo
    // ...
 
    // Cerrar conexión
    SSL_shutdown(ssl);
    close(sockfd);
 
    // Liberar recursos
    SSL_free(ssl);
    SSL_CTX_free(ctx);
 
    return 0;
}

Este es solo un ejemplo básico y deberás adaptarlo a tus necesidades específicas, incluyendo la autenticación, el envío de correos, etc. Además, ten en cuenta que algunos servidores SMTP pueden requerir autenticación y el uso de TLS/SSL.

Espero que este código te ayude como punto de partida.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar