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);
}
↑