API: Sähköposti (SMTP)
Funktio sähköpostin lähettämiseen SMTP-palvelimen kautta.
C++-rekisteröinti: regEmail(js).
Toteutus: jsEmail.h.
send_email
send_email(config: object) → object
Lähetä sähköposti SMTP:n kautta.
Parametrit (config-objektin kentät):
| Kenttä | Tyyppi | Pakollinen | Kuvaus |
|---|---|---|---|
host |
merkkijono | ✓ | SMTP-palvelin |
port |
numero | ✓ | Portti (25, 465, 587) |
user |
merkkijono | ✓ | SMTP-autentikointikäyttäjätunnus |
pass |
merkkijono | ✓ | Salasana |
ssl |
bool | — | true — SMTPS (SSL ensimmäisestä tavusta, yleensä portti 465) |
starttls |
bool | — | true — STARTTLS (yhteyden päivitys, yleensä portti 587) |
from |
object | ✓ | Lähettäjä (katso alta) |
to |
object | ✓ | Vastaanottaja (katso alta) |
subject |
merkkijono | ✓ | Sähköpostin otsikko |
body |
merkkijono | ✓ | Sähköpostin sisältö (pelkkä teksti) |
from- ja to-objektien kentät:
| Kenttä | Tyyppi | Kuvaus |
|---|---|---|
email |
merkkijono | Sähköpostiosoite |
name |
merkkijono | Näyttönimi |
Tulos:
| Kenttä | Tyyppi | Kuvaus |
|---|---|---|
code |
numero | 0 — onnistui, negatiivinen — virhe |
log |
merkkijono | SMTP-keskustelu (vianetsintää varten) |
error |
merkkijono | Virheilmoitus tai "" |
Yhteyden tilat
| Tila | Portti | Konfiguraatio |
|---|---|---|
| SMTPS (SSL) | 465 | ssl: true |
| STARTTLS | 587 | starttls: true |
| Tavallinen SMTP | 25 | ei lippuja |
Esimerkkejä
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: "Hälytys: palvelu ei käytettävissä",
body: "MyService lopetti vastaamisen kello 14:35."
});
if (r.code === 0) {
console.log("Sähköposti lähetetty");
} else {
console.log("Virhe:", r.error);
console.log("SMTP-loki:", r.log);
}
Gmail (Sovellussalasana)
Gmail vaatii Sovellussalasanan, ei tavallista salasanaasi. Ota se käyttöön: Google-tili → Turvallisuus → Kaksivaiheinen tunnistautuminen → Sovellussalasanat. Huomio: Gmail ei enää tue SMTP:ta.
Paikallinen SMTP (ei 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: "Hälytys",
body: "Jokin meni pieleen"
});
Lähettäminen konfiguraation kautta
Konfiguraatio 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": "Testiviesti",
"body": "Tämä on testisähköposti JsN:stä"
}
}
Skripti 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
SMTP-vianetsintä
Virheen sattuessa tulosta r.log — se sisältää koko SMTP-keskustelun:
let r = send_email({ ... });
if (r.code !== 0) {
console.log("=== SMTP-LOKI ===");
console.log(r.log);
console.log("=== VIRHE ===");
console.log(r.error);
}