# 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ść ```json "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) ```ts import { sendEmail } from '@intecion/ipal-kit/server' const result = await sendEmail({ payload, to: 'kontakt@klient.pl', subject: 'Nowa wiadomość', html: '
Treść…
', // 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`: ```ts // 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ą.