Description
My Newsletter is a lightweight 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 target commenters from a specific post,
- queue the campaign and process it in the background,
- include unsubscribe links in every message,
- track basic campaign progress in the admin area.
This plugin is intentionally simple and WordPress-native. It relies on wp_mail() for sending and WP-Cron for queue processing, which makes it easy to install and use on most shared hosting environments.
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
-
Background queue processing
- Recipients are queued in a custom plugin table.
- 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 can include an unsubscribe URL.
- Unsubscribe tokens use an HMAC-based signature (derived from WordPress salts).
- Unsubscribed addresses are stored in a dedicated plugin table and skipped in future campaigns.
-
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)
-
Basic campaign tracking
- Shows recent campaigns in admin.
- Displays queue progress (total / sent / failed / queued).
How sending works (important)
This plugin uses WP-Cron. WP-Cron runs when your site receives traffic. That means:
- On active sites, sending progresses regularly.
- On low-traffic sites, sending may be slower.
For production use, it is recommended to configure a real server cron that triggers wp-cron.php periodically.
Email deliverability note
My Newsletter sends through wp_mail(). Actual delivery quality depends on your hosting and email configuration.
For best results, use:
- a real SMTP provider,
- a verified sender domain,
- properly configured SPF / DKIM / DMARC,
- a valid
Fromaddress on your domain.
Data storage
The plugin creates two custom tables:
wpnl_queue– campaign queue and send statuswpnl_unsub– unsubscribed email addresses
On uninstall, those plugin tables and plugin options are removed.
Installation
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.
Manual installation
- Upload the
my-newsletterfolder to/wp-content/plugins/. - Activate the plugin in Plugins.
- Configure settings and send a test email first.
FAQ
-
Does this plugin use double opt-in?
-
Not yet. Version 2.x focuses on admin-triggered newsletter sending, background queue processing, and secure unsubscribe handling.
-
Why is my campaign sending slowly?
-
Because WP-Cron is traffic based. If your site has little traffic, cron jobs run less frequently. Configure a real cron job for more reliable processing.
-
Can I send to only commenters from one post?
-
Yes. Choose Commenters on a specific post and select the post in the composer screen.
-
Does it track opens/clicks?
-
No. This plugin tracks send queue progress only (queued / sent / failed). It does not include analytics pixels or click tracking.
-
Will unsubscribed addresses receive future campaigns?
-
No. The plugin checks the unsubscribe table before queuing recipients.
-
What if `wp_mail()` fails?
-
Failed sends are marked as failed in the queue. For reliable sending, configure SMTP and verify the sender domain.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“My Newsletter” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “My Newsletter” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
2.0.2
- Fixed remaining Plugin Check errors (escaping, discouraged functions, and
wp_parse_url()compatibility) - Added
languagesdirectory to satisfy plugin headerDomain 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 via WP-Cron
- Added secure unsubscribe endpoint and token validation
- Added settings screen and sender/footer configuration
- Added test email action
- Added campaign progress reporting
