3 Commits
1.1.0 ... main

Author SHA1 Message Date
34a6df5317 some modifications 2026-01-17 18:39:09 +00:00
58d4fb2d43 Make README SMTP-provider agnostic
- Remove Brevo-specific branding
- Add SMTP provider comparison table
- Use environment variables in code examples

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-16 23:04:34 +00:00
f8d2398d22 Add screenshot to README
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-16 22:46:53 +00:00
15 changed files with 25 additions and 18 deletions

View File

@@ -4,7 +4,7 @@ PORT=3000
# Email Configuration # Email Configuration
MAIL_PROVIDER=smtp MAIL_PROVIDER=smtp
MAIL_FROM_EMAIL=noreply@example.com MAIL_FROM_EMAIL=noreply@example.com
MAIL_FROM_NAME=Secure Portal MAIL_FROM_NAME=Mail Server
# SMTP (Brevo) # SMTP (Brevo)
SMTP_HOST=smtp-relay.brevo.com SMTP_HOST=smtp-relay.brevo.com

View File

@@ -1,6 +1,6 @@
# Mail-Service mit Brevo SMTP # Mail-Service
Ein Node.js-basierter Mail-Service mit Weboberfläche zum Versenden von E-Mails über Brevo (ehemals Sendinblue) SMTP. Inklusive persistenter Versand-Historie und eingebettetem Bild-Footer. Ein Node.js-basierter Mail-Service mit Weboberfläche zum Versenden von E-Mails über SMTP. Funktioniert mit jedem SMTP-Anbieter (Brevo, Mailgun, Resend, SendGrid, eigener Mailserver, etc.). Inklusive persistenter Versand-Historie und eingebettetem Bild-Footer.
## Features ## Features
@@ -9,7 +9,11 @@ Ein Node.js-basierter Mail-Service mit Weboberfläche zum Versenden von E-Mails
- **Persistente Historie** in SQLite-Datenbank - **Persistente Historie** in SQLite-Datenbank
- **Eingebettete Bilder** via CID-Attachment (werden ohne "Bilder anzeigen" dargestellt) - **Eingebettete Bilder** via CID-Attachment (werden ohne "Bilder anzeigen" dargestellt)
- **REST-API** für programmatischen Zugriff - **REST-API** für programmatischen Zugriff
- **Brevo SMTP** mit DKIM/SPF/DMARC-Unterstützung - **Flexibler SMTP-Versand** - Kompatibel mit allen SMTP-Anbietern
## Screenshot
![Mail-Service Weboberfläche](screenshots/screenshot1.png)
## Projektstruktur ## Projektstruktur
@@ -56,25 +60,28 @@ cp .env.example .env
PORT=3000 PORT=3000
# Email Configuration # Email Configuration
MAIL_PROVIDER=smtp
MAIL_FROM_EMAIL=noreply@example.com MAIL_FROM_EMAIL=noreply@example.com
MAIL_FROM_NAME=Secure Portal MAIL_FROM_NAME=Mein Service
MAIL_FOOTER_NAME=Dein Name MAIL_FOOTER_NAME=Dein Name
# SMTP (Brevo) # SMTP
SMTP_HOST=smtp-relay.brevo.com SMTP_HOST=smtp.example.com
SMTP_PORT=587 SMTP_PORT=587
SMTP_USER=deine-email@example.com SMTP_USER=dein-username
SMTP_PASSWORD=dein-brevo-smtp-key SMTP_PASSWORD=dein-passwort
SMTP_SECURE=false SMTP_SECURE=false
``` ```
### Brevo SMTP-Key erstellen ### SMTP-Anbieter Beispiele
1. Bei [Brevo](https://www.brevo.com) einloggen | Anbieter | SMTP_HOST | SMTP_PORT | SMTP_SECURE |
2. Gehe zu: Einstellungen → SMTP & API → SMTP |----------|-----------|-----------|-------------|
3. "SMTP-Schlüssel generieren" klicken | Brevo | smtp-relay.brevo.com | 587 | false |
4. Schlüssel in `.env` als `SMTP_PASSWORD` eintragen | Mailgun | smtp.mailgun.org | 587 | false |
| Resend | smtp.resend.com | 465 | true |
| SendGrid | smtp.sendgrid.net | 587 | false |
| Gmail | smtp.gmail.com | 587 | false |
| Eigener Server | mail.domain.de | 465 | true |
## Starten ## Starten
@@ -257,9 +264,9 @@ const nodemailer = require('nodemailer');
const path = require('path'); const path = require('path');
const transporter = nodemailer.createTransport({ const transporter = nodemailer.createTransport({
host: 'smtp-relay.brevo.com', host: process.env.SMTP_HOST,
port: 587, port: parseInt(process.env.SMTP_PORT),
secure: false, secure: process.env.SMTP_SECURE === 'true',
auth: { auth: {
user: process.env.SMTP_USER, user: process.env.SMTP_USER,
pass: process.env.SMTP_PASSWORD pass: process.env.SMTP_PASSWORD

BIN
assets/blue-green.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 910 B

BIN
assets/blue-red.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 884 B

BIN
assets/blue.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 936 B

BIN
assets/cal-green.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 703 B

BIN
assets/cal.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 678 B

BIN
assets/cog-green.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
assets/cog.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
assets/home-green.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 640 B

BIN
assets/home-red.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 670 B

BIN
assets/psy-green.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
assets/psy-red.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
assets/psy.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
screenshots/screenshot1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB