Package Information
Available Nodes
Documentation generating…
Documentation
n8n-nodes-mail-martinsil
An n8n community node for Martin Šíl Mail (mail-martinsil), a private email-sending API on Amazon SES with the same HTTP API as Resend. Send emails with attachments from your workflows, and read their delivery status.
Using it needs an account in the service: a verified domain and an API key from the panel.
Installation
Community nodes from npm work in self-hosted n8n (n8n Cloud allows only verified nodes). In n8n, open Settings → Community nodes → Install and enter n8n-nodes-mail-martinsil. Other ways (the command line, environment variables) are in n8n's installation guide.
Credentials
Create a Martin Šíl Mail API credential:
- API Key: a key from the panel's API Keys page (
ms_live_…). The panel shows it only once. - Base URL:
https://mail.martinsil.cz/api, the default. Change it only for another deployment.
Saving the credential checks the key.
Operations
Email → Send sends one email (POST /emails):
From: an address on a domain verified in the panel, with an optional display name (
Acme <noreply@acme.com>).To: comma-separated addresses, or an expression that gives an array. At most 50 recipients in To, CC and BCC together.
Subject, and the body as HTML, Text or Both (HTML with a plain-text alternative, best for deliverability).
Options: CC, BCC, Reply To, custom headers, tags, an idempotency key, and attachments:
- From Binary Field: a file from the input item's binary data (e.g. from Read/Write Files from Disk or HTTP Request). Set a Content ID to show an image inline, as
<img src="cid:logo">. - From URL: a public
https://URL that the server downloads.
At most 25 MB of attachments per email. When a request would be over 4 MB, the node uploads the largest files separately first, so big files work too.
- From Binary Field: a file from the input item's binary data (e.g. from Read/Write Files from Disk or HTTP Request). Set a Content ID to show an image inline, as
The output is the email's id: { "id": "4ef9a417-…" }.
Email → Get returns an email by its id, with its delivery status in last_event (sent, delivered, bounced, complained, …). Emails are kept for 90 days.
Retries without duplicates
Set Options → Idempotency Key to something that identifies the email, such as order-{{ $json.orderId }}. Sending again with the same key within 24 hours returns the first email's id instead of sending another one, so n8n's Retry On Fail never sends twice.
Errors
A refused email stops the node with the API's message, and its error name and status in the details (e.g. domain_not_verified, daily_quota_exceeded). With On Error → Continue, the item gets { error, name, statusCode, retryAfter } instead, so the workflow can branch on name. Worth retrying: rate_limit_exceeded and daily_quota_exceeded (after retryAfter seconds), internal_server_error, ses_error and concurrent_idempotent_requests. Never sending_paused, which lasts until the administrator resumes sending.
Compatibility
Built with @n8n/node-cli and tested with n8n 2.x. No runtime dependencies.
Development
In this folder: pnpm run build, pnpm run lint and pnpm test (unit tests of the helpers). pnpm run dev starts n8n with the node loaded.
License
MIT