Files
ipal-kit/docs/email.md
T
2026-08-04 19:37:23 +02:00

2.4 KiB

email

Wysyłka maili przez SMTP z SiteIntegrations, w runtime (bez Payload email adaptera). Edytor zmienia SMTP w panelu — następny mail idzie z nowymi ustawieniami, bez restartu.

Zależność

"dependencies": { "nodemailer": "^6.9.0" }

(+ @types/nodemailer w devDependencies)

Config

Brak opcji — SMTP (host, port, user, password, from) jest w SiteIntegrations (tab SMTP). Edytor konfiguruje w panelu.

Front — sendEmail (server)

import { sendEmail } from '@intecion/ipal-kit/server'

const result = await sendEmail({
  payload,
  to: '[email protected]',
  subject: 'Nowa wiadomość',
  html: '<h1>Cześć</h1><p>Treść…</p>',   // gotowy HTML (Twój wygląd)
  // text: 'wersja plain', from: '...', replyTo: '...'
})

if (result.sent) {
  // result.messageId
} else {
  // result.error — np. "SMTP is not configured..."
}
  • HTML to Twój argument — plugin nie ma templatek, wysyła to co podasz. Wygląd maila składasz na froncie.
  • Zwraca { sent: true, messageId } albo { sent: false, error } — nie rzuca wyjątku, nie wycieka detali SMTP do klienta.
  • Port 465 → implicit TLS, inne → STARTTLS.
  • server-only — hasło SMTP nigdy w bundlu przeglądarki.

Uwaga: maile systemowe Payloada

Reset hasła / weryfikacja email idą przez wbudowany mechanizm Payload (config.email), którego ten moduł nie konfiguruje (celowo — wymagałby SMTP w env). Jeśli ich potrzebujesz, to osobna konfiguracja adaptera przy buildConfig.

Adapter — SMTP z panelu dla całego Payloada

sendEmail wysyła własnym transportem. Osobno plugin daje adapter, który podłącza tę samą skrzynkę pod payload.sendEmail:

// payload.config.ts
import { panelSmtpAdapter } from '@intecion/ipal-kit'

export default buildConfig({
  email: panelSmtpAdapter(),
  // panelSmtpAdapter({ fallbackFromAddress, fallbackFromName }) — używane tylko
  // zanim panel zostanie wypełniony (Payload wymaga adresu synchronicznie przy
  // starcie, zanim można odczytać globala)
})

Po wpięciu wszystko, co w Payloadzie wysyła maile, idzie przez SMTP z Site Integrations — w tym wbudowane maile form-buildera (Forms → Emails), maile resetu hasła i weryfikacji konta. Adapter czyta konfigurację przy każdym wysłaniu, więc zmiana skrzynki w panelu działa bez restartu.

Bez adaptera Payload używa mocka, który tylko loguje do konsoli — maile form-buildera nie wyjdą.