Manage email delivery settings (SMTP, PHP mail, Sendmail) directly from the OJS admin panel — no need to edit config.inc.php.
Built for OJS 3.3.x by OJS Services
- Per-journal SMTP configuration — Each journal can have its own mail settings
- Service presets — Quick setup for Gmail, Yandex, Office 365 and more
- Test email — Verify your settings work before going live
- Mail statistics — Track emails sent today, last 7 days and last 30 days
- Native backend integration — The settings page uses the standard OJS backend layout, plus a quick-access link in the navigation sidebar
- Role-based access — Site Admins and Journal Managers by default; configurable per journal (select which manager-level groups may access the settings)
- SMTP From address handling — Automatic From/Reply-To rewrite for provider compatibility (Gmail, Yandex, etc.)
- Email deliverability info — SPF, DKIM, DMARC recommendations
- Secure — CSRF protection, encrypted password storage, input validation
- Bilingual — English and Turkish (more languages welcome via PR)
- No core modifications — Clean plugin architecture, safe to update OJS
- OJS 3.3.x
- PHP 7.4+ (PHP 8.1 compatible)
- Download the latest release from the Releases page
- Go to your OJS dashboard → Settings → Website → Plugins → Upload A New Plugin
- Upload the
.tar.gzfile - Enable the plugin from the Generic Plugins list
- Click Settings on the plugin, or use the Email Settings link in the sidebar
- Open the plugin settings
- Select Use Custom Mail Settings
- Choose a preset (Gmail, Yandex, Office 365, etc.)
- Enter your email and password
- Save and send a test email
- Select Use Custom Mail Settings
- Choose SMTP (Recommended) as delivery method
- Enter your SMTP server, port, encryption and credentials
- Save and test
Select Use OJS Default Configuration and save. The system will immediately fall back to your config.inc.php settings.
The plugin hooks into the OJS mail sending process and takes full control when custom settings are active. It creates its own PHPMailer instance, configures it with your settings, and sends the email directly. When disabled or set to default, OJS behaves exactly as before.
From address handling: Many SMTP providers (Gmail, Yandex) reject emails when the From address doesn't match the authenticated account. The plugin automatically rewrites the From address to match your SMTP credentials and preserves the original sender as Reply-To, so replies still go to the right person.
- Scheduled tasks / CLI (multi-journal only): Emails triggered without an HTTP request context (e.g. review reminders sent by
runScheduledTasks.phpor the Acron plugin) carry no journal context. On a single-journal installation the plugin automatically falls back to that journal's custom settings, so everything works. On a multi-journal installation the plugin cannot know which journal a CLI-triggered email belongs to, so those emails are sent with theconfig.inc.phpdefaults — keep a working mail configuration there if you rely on scheduled task emails. - Database password change: The stored SMTP password is encrypted with a key derived from the OJS database password. If you change the database password, re-enter the SMTP password in the plugin settings (the plugin will log a clear message and fall back to
config.inc.phpuntil you do).
- Sidebar link is now a native OJS menu entry (added to the backend Vue menu state, like core items): plain text, no icon, standard styling and active state; the JavaScript DOM-injection approach was removed entirely
- Sidebar link now appears on every backend page, including other plugins' management pages (backend detection switched from a fragile page/template whitelist to OJS' own
setupBackendPage()menu state) - Active sidebar link is now readable: inline color override removed so the theme's own
.app__navItem--isCurrentrule (white on dark) applies
- Settings page now uses the native OJS backend layout (real navigation sidebar, header and user menu)
- Configurable access: choose which manager-level user groups may manage mail settings (with self-lockout protection)
- Single-journal installations: custom SMTP settings now also apply to emails sent from scheduled tasks / CLI
- More robust password encryption format (v2, backward compatible; failures are now logged instead of silently sending garbage credentials)
- Atomic per-day mail counters — concurrent sends no longer lose statistics (old data migrated automatically)
- Full localization of the settings UI (no hardcoded English strings in JS/templates; localized button labels are preserved)
- PHP 8.1 compatibility fixes (no deprecation warnings)
- Accessibility: keyboard-operable preset cards, ARIA live regions, focus styles
- Performance: per-request caching of access checks; sidebar script injected once per request
- Test email rate limit no longer consumed by rejected (invalid) addresses
- Mail statistics (today / 7 days / 30 days) in status banner
- Sidebar navigation link for quick access
- Role-based access control (Journal Manager vs Journal Editor distinction)
- Email deliverability recommendations (SPF/DKIM/DMARC)
- UI layout improvements
- Per-journal custom mail settings
- SMTP/PHP mail/Sendmail support
- Service presets (Gmail, Yandex, Office 365)
- Test email functionality
- CSRF protection and encrypted password storage
- Full hook takeover for reliable mail delivery
- From address SMTP compatibility fix
- English and Turkish localization
- Issues: GitHub Issues
- Consulting: ojs-services.com
- Email: info@ojs-services.com
Contributions are welcome! Feel free to submit issues, feature requests or pull requests. Translation contributions are especially appreciated.
This plugin is licensed under the GNU General Public License v3.0.
Made with ❤️ by OJS Services — Professional OJS hosting, themes, plugins and consulting for academic journals.