Version0.1.0Verifiednot yet verifiedLicenseBSD-3-Clause
Readme
sigil-ses
A Sigil library for the Amazon SES v2 API. Send email, manage suppression lists, and parse bounce/complaint notifications.
Features
- Send email -- simple text/HTML emails with To/Cc/Bcc/Reply-To support
- Bulk email -- send to multiple recipients with template substitution
- Suppression list -- add, remove, query, and list suppressed addresses
- Account info -- sending quota, daily usage, enforcement status
- Identity verification -- check domain/email DKIM and MAIL FROM status
- Bounce/complaint parsing -- stateless SNS notification parsing with typed records
- AWS SigV4 signing -- full implementation of AWS Signature Version 4
Usage
(import (amazon ses))
;; Create a client (defaults to us-east-2 region)
(define client (ses-client access-key-id: "AKIA..."
secret-access-key: "wJalr..."))
;; Send a simple email
(ses-send-email client
"[email protected]"
"[email protected]"
"Hello from Sigil"
"This is the plain text body."
html: "<h1>Hello from Sigil</h1><p>HTML body here.</p>"
reply-to: "[email protected]")
;; Send to multiple recipients
(ses-send-email client
"[email protected]"
'("[email protected]" "[email protected]")
"Newsletter #42"
"Plain text content."
html: "<p>Newsletter content.</p>"
bcc: '("[email protected]"))
;; Check account quota
(let ((acct (ses-get-account client)))
(display (ses-account-send-quota acct))
(display (ses-account-sent-last-24h acct)))
;; Manage suppression list
(ses-put-suppressed client "[email protected]" "BOUNCE")
(ses-list-suppressed client)
(ses-delete-suppressed client "[email protected]")
;; Check domain identity
(let ((id (ses-get-identity client "systemcrafters.net")))
(ses-identity-verified? id)
(ses-identity-dkim-status id))Read the rest
Bounce/Complaint Notifications
Parse SNS notifications from SES:
(import (amazon ses notify))
;; In your webhook handler, parse the SNS JSON body:
(let ((notif (parse-ses-notification json-body)))
(when notif
(cond
((ses-hard-bounce? notif)
;; Remove permanently bounced addresses
(for-each remove-subscriber (ses-notification-addresses notif)))
((ses-complaint? notif)
;; Unsubscribe complainers
(for-each unsubscribe (ses-notification-addresses notif))))))Configuration
SES requires AWS credentials with ses:SendEmail and related IAM permissions.
Environment variables (load with your preferred method):
AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_REGION(optional, defaults to us-east-2)
Dependencies
- sigil-stdlib
- sigil-http
- sigil-json
- sigil-crypto
Building
sigil deps install
sigil build
sigil testLicense
BSD-3-Clause
Clone
$ git clone https://codeberg.org/sigil/sigil-ses
Releases
v0.9.1 — latest by version, released 1 Apr 2026
All releases — 1 tag in this repository.
Source
One page per file, and every line has a permalink.
Recent commitsAtom
1 Aprcommit
30 Marcommit
30 Marcommit
The last 20 commits keep a page here. Everything older lives in the clone.