viewmend / typo3-auto-replies
ViewMend Auto-replies - Send automatic email replies after TYPO3 Core Form submissions with visual templates, rules, retries and delivery history.
Package info
github.com/phpner/viewmend-typo3-auto-replies
Type:typo3-cms-extension
pkg:composer/viewmend/typo3-auto-replies
Requires
- php: >=8.3 <8.6
- ext-sodium: *
- typo3/cms-backend: ~13.4.0 || ~14.3.0
- typo3/cms-core: ~13.4.0 || ~14.3.0
- typo3/cms-extbase: ~13.4.0 || ~14.3.0
- typo3/cms-fluid: ~13.4.0 || ~14.3.0
- typo3/cms-form: ~13.4.0 || ~14.3.0
- typo3/cms-rte-ckeditor: ~13.4.0 || ~14.3.0
- viewmend/sdk: ^1.2
- viewmend/typo3-core: ^1.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.87
- phpstan/phpstan: ^2.1
- phpunit/phpunit: ^11.5
Suggests
- typo3/cms-scheduler: Runs Auto-replies workers from the TYPO3 Scheduler backend.
README
viewmend/typo3-auto-replies is a standalone ViewMend product. It stores an
accepted TYPO3 Core Form submission locally, selects the first matching rule,
captures an immutable message snapshot, and immediately attempts the reply
through the configured TYPO3 Mailer. A durable local queue preserves delayed
and recoverable deliveries. It runs independently of other ViewMend products.
The shared viewmend/typo3-core dependency supplies the
top-level ViewMend Dashboard and the small product registration contract.
Auto-replies contributes permission-scoped rule and delivery counters through
the optional Dashboard status contract; Core remains independent of the
Auto-replies repositories and schema. The framework-agnostic viewmend/sdk
client provides the optional signed ViewMend Cloud scheduling connection.
Supported platform
- PHP 8.3–8.5
- TYPO3 13.4 LTS and TYPO3 14.3
- TYPO3 Core Form
- MySQL/MariaDB, PostgreSQL, or SQLite through Doctrine DBAL
Powermail is intentionally not a hidden dependency. A compatible optional
adapter can be added later without coupling Auto-replies to another product.
Form-source adapters implement the typed FormCatalogProviderInterface, map
their runtime values into an immutable NormalizedSubmission, and call the
single SubmissionAcceptanceService. Rules always bind to one existing TYPO3
site and one exact form persistence identifier; there is no global or wildcard
matching mode.
Install
composer require viewmend/typo3-auto-replies vendor/bin/typo3 extension:setup vendor/bin/typo3 viewmend:auto-replies:doctor
Add the ViewMend Auto-replies finisher after successful validation and
before EmailToReceiver, EmailToSender, Redirect, and DeleteUploads.
The submission and queue decision are committed in one database transaction.
After that commit, an immediate rule is attempted automatically. Mailer failure
never rejects or removes the accepted form submission; it is recorded in
Delivery history and scheduled for recovery.
The Doctor command fails when the finisher is unavailable in the TYPO3 Form editor, when an enabled rule points to a form without it, or when email, redirect, or upload deletion runs before it.
No command, Scheduler task, or cron configuration is required for ordinary immediate replies. Due recovery jobs are also processed in small bounded passes by normal frontend traffic. Delivery history provides Send due now for an administrator who wants to start a pass immediately.
The backend Settings tab stores a default send time for each TYPO3 website. Rules use that website default unless an explicit timing override is selected in Studio. Changing the default affects only future matching submissions; queued messages keep the immutable delivery time captured when they were accepted.
Settings can also connect Automatic delayed delivery. Create an automatic
delivery connection for the public HTTPS domain in
ViewMend Integrations, paste its one-time
token, and choose a simple check frequency. The extension registers its fixed
callback path through viewmend/sdk; administrators never enter a cron expression,
callback host, method, header, or request body. ViewMend verifies the callback
and then runs due delayed replies and retries even when the website has no
traffic. Immediate replies stay local and continue to work when ViewMend is not
connected or temporarily unavailable.
The connection token is encrypted at rest with a key derived from TYPO3
SYS.encryptionKey and is never returned to the browser after saving. Callback
signatures are checked against the exact request body. Completed ViewMend run
IDs are stored for 30 days, and a repeated run is acknowledged without
repeating completed queue work.
Advanced self-hosted installations can still run the same bounded worker through an existing process manager:
vendor/bin/typo3 viewmend:auto-replies:work --limit=25
Privacy cleanup also runs in a bounded pass from normal frontend traffic, at most once every six hours. The maintenance command remains available for installations that prefer to run the same cleanup centrally:
vendor/bin/typo3 viewmend:auto-replies:retention --limit=250
Settings also reports the active TYPO3 mail transport and system sender. Webhook, Slack, Microsoft Teams, and Telegram connections remain roadmap information and are not active integrations in this release.
Delivery semantics
Accepted by TYPO3 mailer means the configured TYPO3/Symfony Mailer accepted
the message, including acceptance into a configured memory spool. It does not
prove delivery to the recipient. Ambiguous SMTP handoff is
recorded as Unknown and is never retried automatically. Manual retry is
bounded, rate limited, and unavailable after payload redaction or accepted
transport evidence.
Backend permissions
Administrators have full access. Non-admin users require User TSconfig and remain constrained to accessible site roots:
options.viewmend.autoReplies {
view = 1
manage = 1
retry = 1
}
Message HTML is allowlisted, merge values are escaped, sensitive/upload fields are excluded from conditions and tags, and terminal snapshots become eligible for redaction after 24 hours on the next retention run.
Studio includes a built-in gallery of copy-on-use message templates. Each template has a complete email preview; choosing one copies its subject, body, and presentation frame into the rule without creating a runtime dependency. The message can then be edited visually or through the Code toolbar action, which opens a dedicated message-HTML dialog and applies the result back to the visual editor. The toolbar includes headings, emphasis, alignment, lists, links, tables, colors, special characters, and formatting cleanup. Custom HTML supports email tables, HTTPS images, inline email CSS, and merge tags. Scripts, embeds, forms, event handlers, unsafe URLs, and unsupported CSS are removed by the server sanitizer before the message is saved or queued.
Repository boundary
This repository owns all Auto-replies code, schema, UI, form integration, queueing, privacy behavior, tests, and release artifacts. It requires Core but never another ViewMend product. Future products follow the same contract and appear beside Auto-replies in the Dashboard.
Uninstall and stored data
Removing the Composer package does not silently delete submissions, immutable jobs, delivery evidence, or encrypted connection settings. Before uninstalling, pause automatic delivery, disconnect the ViewMend connection, export anything that must be retained, and run the retention command. Database tables can then be removed deliberately through the TYPO3 schema workflow or by an administrator after a verified backup.
Support and security
Use GitHub Issues for reproducible bug reports and feature requests. Do not disclose security vulnerabilities publicly; report them to support@viewmend.com with the affected version and reproduction details.