API: Correo electrónico (SMTP)

Función para enviar correo electrónico a través de un servidor SMTP.

Registro en C++: regEmail(js). Implementación: jsEmail.h.


send_email

send_email(config: object) → object

Envía un correo electrónico mediante SMTP.

Parámetros (campos del objeto config):

Campo Tipo Requerido Descripción
host string Servidor SMTP
port number Puerto (25, 465, 587)
user string Usuario para autenticación SMTP
pass string Contraseña
ssl bool true — SMTPS (SSL desde el primer byte, normalmente puerto 465)
starttls bool true — STARTTLS (actualización de conexión, normalmente puerto 587)
from object Remitente (ver abajo)
to object Destinatario (ver abajo)
subject string Asunto del correo
body string Cuerpo del correo (texto plano)

Campos de from y to:

Campo Tipo Descripción
email string Dirección de correo electrónico
name string Nombre para mostrar

Resultado:

Campo Tipo Descripción
code number 0 — éxito, negativo — error
log string Diálogo SMTP (para depuración)
error string Mensaje de error o ""

Modos de conexión

Modo Puerto Configuración
SMTPS (SSL) 465 ssl: true
STARTTLS 587 starttls: true
SMTP plano 25 sin banderas

Ejemplos

Office 365

let r = send_email({
    host: "smtp.office365.com",
    port: 587,
    ssl: false,
    starttls: true,
    user: "user@yourdomain.com",
    pass: "your_password",
    from: { email: "user@yourdomain.com", name: "System Mailer" },
    to:   { email: "admin@example.com",   name: "Admin" },
    subject: "Alerta: servicio no disponible",
    body: "MyService dejó de responder a las 14:35."
});

if (r.code === 0) {
    console.log("Correo enviado");
} else {
    console.log("Error:", r.error);
    console.log("Registro SMTP:", r.log);
}

Gmail (Contraseña de aplicación)

Gmail requiere una Contraseña de aplicación, no tu contraseña habitual. Actívala: Cuenta de Google → Seguridad → Verificación en dos pasos → Contraseñas de aplicación. Nota: Gmail ya no admite SMTP.

SMTP local (sin TLS)

let r = send_email({
    host: "mail.internal.corp",
    port: 25,
    ssl: false,
    starttls: false,
    user: "mailer@internal.corp",
    pass: "password",
    from: { email: "mailer@internal.corp", name: "Mailer" },
    to:   { email: "admin@internal.corp", name: "Admin" },
    subject: "Alerta",
    body: "Algo salió mal"
});

Envío mediante configuración

Configuración CaEmail.json:

{
  "scriptfile": "./email_send.js",
  "arg": {
    "host": "smtp.office365.com",
    "port": 587,
    "ssl": false,
    "starttls": true,
    "user": "user@yourdomain.com",
    "pass": "CHANGE_ME",
    "from": {
      "email": "user@yourdomain.com",
      "name": "System Mailer"
    },
    "to": {
      "email": "recipient@example.com",
      "name": "Recipient"
    },
    "subject": "Mensaje de prueba",
    "body": "Este es un correo de prueba desde JsN"
  }
}

Script email_send.js:

let resp = send_email({
    host:     arg.host,
    port:     arg.port,
    ssl:      arg.ssl,
    starttls: arg.starttls,
    user:     arg.user,
    pass:     arg.pass,
    from:     arg.from,
    to:       arg.to,
    subject:  arg.subject,
    body:     arg.body
});

console.log(JSON.stringify(resp, null, 2));
JsN.exe CaEmail.json

Depuración SMTP

En caso de error, imprime r.log — contiene el diálogo SMTP completo:

let r = send_email({ ... });
if (r.code !== 0) {
    console.log("=== REGISTRO SMTP ===");
    console.log(r.log);
    console.log("=== ERROR ===");
    console.log(r.error);
}