76 lines
2.4 KiB
Markdown
76 lines
2.4 KiB
Markdown
# 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: '[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`:
|
|
|
|
```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ą. |