Express’s built-in express.urlencoded() parses a submitted form into a plain object on req.body, and mail() accepts that object directly, no extra dependency needed.
Postboi extracts the special fields and renders the rest into a
tidy HTML table.
Point a form at /contact. Include hidden _subject and _reply_to fields, and mirror the
email into _reply_to with a one-line oninput so replying reaches the sender. Field names
use the fieldset→field syntax.
A urlencoded form can’t carry files. For attachments, switch to enctype="multipart/form-data" and parse it with a multipart parser like multer. req.body still flows into mail({ body }) the same way.
The provider and default recipient come from postboi.config.js: a POSTBOI_TOKEN routes to the Postboi provider, or pick any provider.
Runnable example: examples/express-provider-postboi.