My Newsletter is a lightweight WordPress newsletter plugin focused on a practical use case many site owners need immediately:
- Send a campaign to WordPress users.
- Send a campaign to commenters (optionally only commenters from a specific post).
- Import and manage your own mailing list (CSV/TXT upload, simple XLSX upload, or paste emails).
- Queue the campaign and process it in the background (batch sending).
- Include unsubscribe links in every message.
- Track basic campaign progress in the admin area.
- Optional file logging for troubleshooting large sends.
- Optional built-in SMTP settings (with SMTP test) (no external SMTP plugin required).
- Save and load reusable email templates (v2.5.0).
- Manage templates (edit/rename/duplicate/delete) from My Newsletter → Templates (v2.6.0).
- Import/export templates as JSON for backup and migration (My Newsletter → Templates) (v2.6.1).
This plugin is intentionally simple and WordPress-native:
Mailing list import & management (v2.3.0)
My Newsletter lets you import and manage your own subscriber list:
- Import subscribers via CSV/TXT upload, simple XLSX upload, or copy/paste.
- Preview the first rows before writing to the database.
- Choose merge behavior: Update existing or Skip existing.
- Built-in list tools: search, export CSV, delete selected, delete all matching search, and delete by domain.
- Suppression list (unsubscribed): view/export and remove suppression (admin-only).
Important: You are responsible for ensuring you have a lawful basis/consent to email imported contacts, and every campaign must include a working unsubscribe option.
Then, when composing a campaign, choose
Mailing list (imported) as the recipient source.
Core functionality
- Campaign composer (admin screen)
- Create a newsletter subject and HTML content.
- Use the WordPress editor for message body content.
- Choose recipient source:
- Users + Commenters
- Users only
- Commenters only
- Commenters on a specific post
- Mailing list (imported)
- Background queue processing
- Recipients are queued in custom plugin tables.
- Sending runs in batches through WP-Cron (instead of trying to send everything in one browser request).
- Reduces the risk of timeouts and broken sends on slower hosting.
- Test email before full campaign
- Send a test message to any email address from the composer screen.
- Uses the same rendering path and unsubscribe footer logic as real sends.
- Secure unsubscribe links
- Every email includes an unsubscribe URL.
- Unsubscribe tokens use an HMAC-based signature (derived from WordPress salts; see
wp_salt() https://developer.wordpress.org/reference/functions/wp_salt/).
- Unsubscribed addresses are stored and skipped in future campaigns.
- Email templates (save/load) (v2.5.0)
- Save the current subject + content as a template.
- Load a saved template into the composer to reuse it for a new campaign.
- Templates are stored locally on your site (not sent anywhere).
- Template variables (placeholders)
{{site_name}}
{{site_url}}
{{recipient_name}}
{{recipient_email}}
{{unsubscribe_url}}
- Settings screen
- From name
- From email
- Reply-To (optional)
- Max emails per cron run (batch size)
- Footer HTML (appended to outgoing emails)
- Logging (optional)
- Optional log file (v2.3.3)
- Enable logging in Settings → Logging.
- View, download, and clear logs in My Newsletter → Logs.
- Logs are stored in
wp-content/uploads/my-newsletter/wpnl.log.
- Basic campaign tracking
- Shows recent campaigns in admin.
- Displays queue progress (total / sent / failed / queued).
Standard WordPress upload (ZIP)
- In WordPress admin, go to Plugins → Add New → Upload Plugin.
- Upload the plugin ZIP package.
- Activate My Newsletter.
- Go to My Newsletter → Settings and configure sender details.
- Create your first campaign in My Newsletter and send a test email first.
Manual installation
- Upload the
my-newsletter folder to /wp-content/plugins/.
- Activate the plugin in Plugins.
- Configure settings and send a test email first.
2.6.1
- Added Templates JSON Import/Export (backup/migrate templates between sites) in My Newsletter → Templates.
- Updated plugin description and usage instructions for template library.
2.6.0
- Added Manage Templates submenu (My Newsletter → Templates): create, edit/rename, duplicate, and delete templates.
- Improved template workflow documentation (save/load + manage).
2.5.0
- Added email templates: Save Email Template + Load Email Template in the campaign composer.
2.4.1
- Added SMTP Test tool in Settings to send a test email and log the result.
2.4.0
- Built-in SMTP settings (Hostinger email compatible) so you can send newsletters without installing a separate SMTP plugin.
- Added Hostinger sending-limit guidance and recommended throttling notes on the Settings screen.
- Updated plugin description and documentation for mailing list import, SMTP, logging, and stop/resume controls.
2.3.6
- Optional SMTP settings (Host/Port/Encryption/Auth/Username/Password) built into My Newsletter (no external SMTP plugin required).
- Uses WordPress PHPMailer hooks; password field is not displayed and is only updated when you enter a new value.
2.3.5
- Fix: Stop/Resume campaign actions no longer trigger a fatal error; add proper admin-post and AJAX handlers.
2.3.4
- Added Stop/Resume controls for campaigns (pause sending without deleting queued emails)
- Queue processing skips stopped/paused campaigns and safely releases in-flight (sending) items
2.3.3
- Added optional log file (uploads/my-newsletter/wpnl.log) with Logs screen (view/download/clear)
- Added queue run locking and "sending" claim status to reduce duplicate processing when cron overlaps
- Added send attempt/success/failure log entries to help diagnose large sends
2.3.2
- Plugin Check fixes: filesystem handling via WP_Filesystem, CSV export without file handles, and SQL prepare improvements.
2.3.1
- Documentation update: clarified mailing list import & management in Description and User Guide
- Added step-by-step import workflow section (Preview + merge rules) and updated list management guidance
- Updated FAQs for import, suppression behavior, and bulk export/delete
2.3.0
- Added compliance UX in import preview (lawful basis / consent confirmation required)
- Added "Delete all matching search" (with confirmation) and "Delete by domain" tools for large lists
- Added Settings → Queue tools: "Run queue now" (admin-only) and Real cron setup examples
2.2.0
List management + suppression UI, plus import preview and merge rules.
2.1.0
- Added Mailing List screen with import via CSV/TXT upload, simple XLSX upload, and paste
- Added "Mailing list (imported)" as a campaign recipient source (queued directly from DB for performance)
- Added new list table (
wpnl_list) with safe upsert and uninstall cleanup
- Added detailed User Guide section to readme for repository reviewers and end users
2.0.2
- Fixed remaining Plugin Check errors (escaping, discouraged functions, and
wp_parse_url() compatibility)
- Added
languages directory to satisfy plugin header Domain Path
- Updated readme metadata (
Tested up to, tags) for repository review
- Cleaned uninstall routine variable prefixes and PHPCS annotations
2.0.1
- Plugin Check compatibility pass and cleanup
- Unified plugin text domain to
my-newsletter
- Cleaned plugin header metadata
- Replaced anonymous PHP callbacks with named methods
- Moved textdomain loading to proper hook flow
- Hardened AJAX handlers (nonce verification, capability checks, input unslashing/sanitization)
- Improved PHPCS annotations for custom DB table queries and uninstall routine
- Added repository placeholder assets (icons/banners)
- Bundled improved readme documentation
2.0.0
- Modernized rewrite / rework of the plugin structure
- Added background queue processing and campaign composer