An Angular email editor built for Sendune
Sendune Email Designer is a drag-and-drop HTML email editor, MIT-licensed and published on npm as @send-with-ses/ng-email-designer. It mounts inside an existing Angular application, so that the app's own users can put emails together without touching HTML. The editor was first written for Sendune (formerly Send With SES), a dashboard that sends mail through the customer's own AWS SES account. The host app reads the result back as HTML with exportHtml(), or as a JSON structure with exportJSON().
Block designer, Monaco HTML mode and table-based output
- Block designer: one- or two-column rows filled with headings, body text, images, videos, buttons and dividers, plus a logo slot and a footer with social icons.
- Two more template types: a Monaco-based HTML code editor for templates you already have, and a plain text mode. The component's
typeinput picksses_designer,html_editororplain_text. - Markup aimed at mail clients: the generator lays the email out in tables, at most 680 px wide, with Outlook conditional comments. The README credits Ted Goas's Cerberus among the work it builds on.
- Videos as thumbnails: a YouTube or Vimeo link becomes the video's thumbnail image, paired with a play triangle and linked to the video.
- Theming with CSS variables: five
--sws-*variables set the colors of the editor's icons, header and borders to match the host app.
Pinned to Angular 15, with storage left to the host app
Angular 15 is the only version the package declares. Version 0.5.22 lists @angular/core ^15.2.0 as a peer dependency, next to ng-bootstrap 14 and ngx-monaco-editor-v2 15. The README says the setup from its Angular 15 StackBlitz demo should work with other versions. Issue #12, open since March 2025, reports the opposite: installation fails on Angular 16 and 17, and later comments hit the same wall on 18 and then 20. Angular's own release support page lists every version from 2 to 19 as unsupported.
Outside Angular, there is nothing to install. The repository ships this module and nothing else. When someone asked how to use it in a Vue project (issue #8), the main contributor pointed to the StackBlitz demo, which is written in Angular.
Images and templates are stored wherever the host app decides. The component keeps no images: it fires imageUploadTriggered and imageSelectionTriggered, and the README asks you to wire those events to your own upload code and a store such as S3, R2 or Cloud Storage. Templates work the same way: they come in through template, each edit goes out through emailContentChanged, and saving is the host's job. The only network calls in the source fetch YouTube and Vimeo thumbnails.
The unsubscribe link is a placeholder. In exported HTML, the footer's "Unsubscribe" link points to {{Unsubscribe}}, which the sending tool has to replace with a real URL.
Fine-grained styling is out of scope by design. The README's "Minimal Rationalism" section reminds readers that they are designing an email, not a website, and tells anyone who wants control over line heights that they are in the wrong place. The same section recommends plain text for transactional mail. Elsewhere, the README rules out intermediate layers such as MJML and pitches the exported HTML as usable with any email service provider.
No GitHub releases or tags, only 0.x versions on npm. npm versions go back to February 2024. The latest, 0.5.22, came out on 1 September 2025, the same day as the last code commit. The commit from 8 June 2026 only edits the README, and two issues remain open, the Angular one among them.
