Prints every message to the log instead of sending it. The queue, worker, retries and the API’s changed responses all behave as in a deployment.
- Identifies itself as
console. - Capabilities
{ messageId: false, verifiable: false }: no boot check.
Turn it on
Reference server (the Ortha CMS monorepo):
# .env
MAIL_PROVIDER=console
APP_URL=http://localhost:4200
MAIL_FROM="Ortha CMS <dev@localhost>"Generated app — its config/mail.ts accepts smtp only, so register it by
hand for local work:
npm install @orthacms/mail-provider-console// apps/server/src/plugins.ts — development only
import { createConsoleMailProvider } from '@orthacms/mail-provider-console';
MailServerPlugin({
provider: createConsoleMailProvider(),
config: {
appUrl: 'http://localhost:4200',
from: 'Ortha CMS <dev@localhost>'
}
});Options: { sink?, includeBody? }. sink defaults to console.info;
includeBody defaults to true.
createConsoleMailProvider({ sink: (line) => logger.debug(line), includeBody: true });Verify
Boot log:
LOG [MailProviderCheck] Mail is enabled through the "console" provider, which declares no boot check.Invite someone (curl example). Within
deliveryIntervalMs (2 s) the log shows:
--- mail (console provider) ---
To: editor@example.com
Subject: You have been invited to Ortha CMS
X-Orthacms-Mail-Kind: invite
Hello,
Ada Lovelace has invited you to Ortha CMS.
Follow the link below to accept the invitation and choose a password.
The link expires on 7 October 2026 at 09:14 (UTC).
If you were not expecting this invitation you can ignore this message.
http://localhost:4200/identity/accept-invite?token=…
---Never in a deployment
With a backend configured the API stops returning the link. A deployment on this adapter reports invitations as sent and delivers them to nobody. No picker offers it and no template registers it.
Console, or no mail at all?
- Unset
MAIL_PROVIDERis simpler for everyday development: the invite response carriesinviteToken. - Console is for working on the mail path itself: template copy, the
token-less responses,
reveal-link. - For automated tests use testkit.