Files
emailmd/README.md

182 lines
4.3 KiB
Markdown

# n8n-nodes-emailmd
n8n community node do wysyłania emaili renderowanych z Markdown za pomocą [emailmd](https://github.com/unmta/emailmd).
## Funkcje
- Pisz treść emaila w Markdown zamiast HTML
- Obsługa YAML frontmatter (`preheader`, `theme`)
- Wbudowane motywy: `default`, `light`, `dark`
- Nadpisywanie kolorów i typografii motywu
- Wsparcie dla: To, CC, BCC, Reply-To, attachments
- Automatyczna generacja wersji plain-text
- Dyrektywy emailmd: `{button}`, `:::callout`, `:::hero`, `:::footer`
## Instalacja
### Docker z lokalnym volume (zalecane)
Typowa konfiguracja n8n w Dockerze ma volume zamontowany w kontenerze pod `/home/node/.n8n`.
Na hoście odpowiada mu katalog, który przekazujesz przez `-v` lub w `docker-compose.yml`.
#### Krok 1 — sklonuj i zbuduj plugin na hoście
```bash
git clone ssh://gitea@git.cynarski.pl:65522/n8n/emailmd.git n8n-nodes-emailmd
cd n8n-nodes-emailmd
npm install
npm run build
```
#### Krok 2 — skopiuj zbudowany plugin do volume n8n
Zakładając, że volume hosta jest np. w `~/n8n-data`:
```bash
mkdir -p ~/n8n-data/custom/node_modules/n8n-nodes-emailmd
cp -r dist package.json node_modules ~/n8n-data/custom/node_modules/n8n-nodes-emailmd/
```
> Katalog `custom` wewnątrz volume jest automatycznie skanowany przez n8n jako lokalne node_modules.
#### Krok 3 — docker-compose.yml
Dodaj zmienną środowiskową `N8N_CUSTOM_EXTENSIONS` wskazującą na katalog `custom` wewnątrz kontenera:
```yaml
services:
n8n:
image: n8nio/n8n
ports:
- "5678:5678"
environment:
- N8N_CUSTOM_EXTENSIONS=/home/node/.n8n/custom
volumes:
- ~/n8n-data:/home/node/.n8n
restart: unless-stopped
```
Następnie zrestartuj kontener:
```bash
docker compose down && docker compose up -d
```
#### Alternatywa — instalacja wewnątrz kontenera
Jeśli wolisz nie kopiować plików ręcznie, możesz zainstalować plugin bezpośrednio w działającym kontenerze:
```bash
# wejdź do kontenera
docker exec -it -u node <nazwa_kontenera> sh
# zainstaluj z lokalnej ścieżki (jeśli masz volume)
cd /home/node/.n8n
mkdir -p custom
cd custom
npm init -y
npm install /home/node/.n8n/n8n-nodes-emailmd # jeśli skopiowałeś katalog do volume
# lub z git (wymaga git w kontenerze)
npm install git+ssh://gitea@git.cynarski.pl:65522/n8n/emailmd.git
```
Po wyjściu z kontenera zrestartuj n8n:
```bash
docker compose restart n8n
```
#### Weryfikacja
Po uruchomieniu n8n wyszukaj w edytorze node o nazwie **"Send Email (Markdown)"** — jeśli się pojawi, instalacja przebiegła pomyślnie.
---
### Opcja 1 — npm link (lokalny development)
```bash
# 1. Zbuduj node
cd /path/to/n8n-nodes-emailmd
npm install
npm run build
# 2. Zlinkuj lokalnie
npm link
# 3. W katalogu n8n
cd ~/.n8n
mkdir -p custom
cd custom
npm link n8n-nodes-emailmd
```
### Opcja 2 — Ścieżka do custom nodes w n8n
Ustaw zmienną środowiskową przed uruchomieniem n8n:
```bash
export N8N_CUSTOM_EXTENSIONS="/path/to/n8n-nodes-emailmd"
n8n start
```
### Opcja 3 — npm install (po opublikowaniu)
```bash
npm install n8n-nodes-emailmd
```
## Konfiguracja
### Credentials (SMTP)
Dodaj credentials typu **SMTP**:
- **Host** — serwer SMTP (np. `smtp.gmail.com`)
- **Port** — `465` (SSL) lub `587` (STARTTLS)
- **Secure** — `true` dla portu 465
- **User** / **Password**
### Parametry node
| Pole | Opis |
|---|---|
| From Name | Nazwa nadawcy |
| From Email | Adres nadawcy (wymagany) |
| To | Odbiorcy (przecinkami) |
| Subject | Temat (wymagany) |
| Markdown | Treść w Markdown (wymagany) |
| Theme | Motyw: default / light / dark |
| Theme Overrides | Nadpisanie kolorów i fontów |
| Attachments | Nazwy binary properties |
## Przykładowy Markdown
```markdown
---
preheader: Krótki podgląd w skrzynce odbiorczej
---
# Witaj {{$json.name}}!
Dziękujemy za rejestrację. Twoje konto jest gotowe.
:::callout
Twój kod aktywacyjny: **{{$json.code}}**
:::
[Aktywuj konto](https://example.com/activate){button}
---
Jeśli masz pytania, odpowiedz na tego emaila.
```
## Obsługiwana składnia emailmd
- **Przyciski**: `[tekst](url){button}` lub `{button .success}`, `{button .danger}`
- **Callout**: `:::callout ... :::`
- **Hero**: `:::hero ... :::`
- **Header/Footer**: `:::header ... :::`, `:::footer ... :::`
- **Wyrównanie**: `:::centered ... :::`
- **Tabele**, listy, kod, obrazy — standardowy Markdown