Forms and email, built in
Editors build forms in the admin. Submissions are validated on the server, emails retry for a day, and bots meet a honeypot.
A contact form shouldn't need a third-party service. Easy CMS 0.20 adds email to the core and a form builder plugin.
Set email in the config: smtp() from the new @easy-cms/email-smtp works with Gmail, SES, Resend, Mailgun or any SMTP server, consoleEmail() prints messages during development, or write your own adapter. cms.sendEmail() queues each message in the database and retries for about a day if sending fails. On serverless hosts, flushEmails() waits for them before the request ends.
Forms
With @easy-cms/plugin-form-builder, editors build forms in the admin from field blocks: text, long text, email, number, phone, choice, checkbox, date and message. Each form has a confirmation message or a redirect, and notification emails that can include the answers.
Submissions are validated on the server, stored without IP addresses and exported as CSV.
A honeypot, a minimum time, a rate limit per visitor and optional Cloudflare Turnstile keep bots out.
<easy-form form="contact">renders a form on any page;getForm()andsubmitForm()are there for your own components.
Both packages add tables, so create a migration after installing them.