{"id":284710,"date":"2026-03-20T00:22:00","date_gmt":"2026-03-20T00:22:00","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/magic-api-email\/"},"modified":"2026-03-27T03:04:26","modified_gmt":"2026-03-27T03:04:26","slug":"magic-api-email","status":"publish","type":"plugin","link":"https:\/\/szl.wordpress.org\/plugins\/magic-api-email\/","author":23295073,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.1.0","stable_tag":"1.1.0","tested":"6.9.4","requires":"6.0","requires_php":"8.0","requires_plugins":null,"header_name":"Magic API Email","header_author":"MagicWP","header_description":"Override WordPress email sending using a custom API provider (Resend, Mailgun, Postmark, Mailtrap, Plunk).","assets_banners_color":"242633","last_updated":"2026-03-27 03:04:26","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/magicwp.io\/?utm_source=wp-plugins&utm_medium=plugin-link&utm_campaign=magic-api-email","rating":5,"author_block_rating":0,"active_installs":0,"downloads":374,"num_ratings":1,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.10":{"tag":"1.0.10","author":"magicwpio","date":"2026-03-20 18:21:33"},"1.0.11":{"tag":"1.0.11","author":"magicwpio","date":"2026-03-26 02:44:07"},"1.0.12":{"tag":"1.0.12","author":"magicwpio","date":"2026-03-27 00:04:03"},"1.0.8":{"tag":"1.0.8","author":"magicwpio","date":"2026-03-20 00:25:08"},"1.0.9":{"tag":"1.0.9","author":"magicwpio","date":"2026-03-20 00:38:09"},"1.1.0":{"tag":"1.1.0","author":"magicwpio","date":"2026-03-27 03:04:26"}},"upgrade_notice":{"1.0.5":"<p>Renamed from &quot;MagicWP Email&quot; to &quot;Magic API Email&quot;. If upgrading from 1.0.4 or earlier, please re-enter your API credentials after activation as the settings storage key has changed.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"assets_icons":{"icon.svg":{"filename":"icon.svg","revision":3491370,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3491370,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3491373,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.10","1.0.11","1.0.12","1.0.8","1.0.9","1.1.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3491370,"resolution":"1","location":"assets","locale":""},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3491370,"resolution":"2","location":"assets","locale":""}},"screenshots":{"1":"Resend API settings configuration.","2":"Mailgun API settings configuration."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[267,7503,25804,52633,6696],"plugin_category":[41],"plugin_contributors":[258163],"plugin_business_model":[],"class_list":["post-284710","plugin","type-plugin","status-publish","hentry","plugin_tags-email","plugin_tags-mailgun","plugin_tags-postmark","plugin_tags-resend","plugin_tags-smtp","plugin_category-communication","plugin_contributors-magicwpio","plugin_committers-magicwpio"],"banners":{"banner":"https:\/\/ps.w.org\/magic-api-email\/assets\/banner-772x250.png?rev=3491373","banner_2x":"https:\/\/ps.w.org\/magic-api-email\/assets\/banner-1544x500.png?rev=3491370","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/magic-api-email\/assets\/icon.svg?rev=3491370","icon":"https:\/\/ps.w.org\/magic-api-email\/assets\/icon.svg?rev=3491370","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/magic-api-email\/assets\/screenshot-1.png?rev=3491370","caption":"Resend API settings configuration."},{"src":"https:\/\/ps.w.org\/magic-api-email\/assets\/screenshot-2.png?rev=3491370","caption":"Mailgun API settings configuration."}],"raw_content":"<!--section=description-->\n<p><strong>Magic API Email<\/strong> replaces the default WordPress email system (<code>wp_mail()<\/code>) with a direct API connection to your chosen transactional email provider. No SMTP configuration needed \u2014 just paste your API key and you're ready to go.<\/p>\n\n<p><strong>Supported Providers:<\/strong><\/p>\n\n<ul>\n<li><a href=\"https:\/\/resend.com\">Resend<\/a> \u2014 Modern email API for developers<\/li>\n<li><a href=\"https:\/\/mailgun.com\">Mailgun<\/a> \u2014 Reliable transactional email<\/li>\n<li><a href=\"https:\/\/postmarkapp.com\">Postmark<\/a> \u2014 Fast, deliverable transactional email<\/li>\n<li><a href=\"https:\/\/mailtrap.io\">Mailtrap<\/a> \u2014 Email delivery platform with sandbox testing<\/li>\n<li><a href=\"https:\/\/useplunk.com\">Plunk<\/a> \u2014 Email API for developers<\/li>\n<\/ul>\n\n<p><strong>Features:<\/strong><\/p>\n\n<ul>\n<li>Per-provider settings \u2014 API key, From Email, and From Name are stored independently for each provider. Switching providers never overwrites another provider's credentials.<\/li>\n<li>Test email \u2014 Send a test email directly from the settings page to verify your configuration.<\/li>\n<li>Secure \u2014 All inputs are sanitized and validated. API keys are stored as password fields.<\/li>\n<li>Lightweight \u2014 No dependencies, no bloat. Three focused class files.<\/li>\n<li>Developer-friendly \u2014 Falls back to default <code>wp_mail()<\/code> if no API key is configured.<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>This plugin acts as a bridge between your WordPress site and your chosen transactional email provider. By design, instead of sending emails via standard <code>wp_mail()<\/code>, this plugin sends the content of your outgoing emails via an HTTPS API request to the provider you select in the settings.<\/p>\n\n<p>Depending on your configuration, the plugin connects to one of the following APIs:\n* <strong>Resend<\/strong> (api.resend.com) - <a href=\"https:\/\/resend.com\/terms\">Terms of Service<\/a> | <a href=\"https:\/\/resend.com\/privacy\">Privacy Policy<\/a>\n* <strong>Mailgun<\/strong> (api.mailgun.net) - <a href=\"https:\/\/www.mailgun.com\/terms\">Terms of Service<\/a> | <a href=\"https:\/\/www.mailgun.com\/privacy\">Privacy Policy<\/a>\n* <strong>Postmark<\/strong> (api.postmarkapp.com) - <a href=\"https:\/\/postmarkapp.com\/terms-of-service\">Terms of Service<\/a> | <a href=\"https:\/\/postmarkapp.com\/privacy-policy\">Privacy Policy<\/a>\n* <strong>Mailtrap<\/strong> (api.mailtrap.io) - <a href=\"https:\/\/mailtrap.io\/terms\">Terms of Service<\/a> | <a href=\"https:\/\/mailtrap.io\/privacy-policy\">Privacy Policy<\/a>\n* <strong>Plunk<\/strong> (api.useplunk.com) - <a href=\"https:\/\/useplunk.com\/terms\">Terms of Service<\/a> | <a href=\"https:\/\/useplunk.com\/privacy\">Privacy Policy<\/a><\/p>\n\n<p><strong>What data is sent and when?<\/strong>\nWhen any plugin or WordPress core feature attempts to send an email (e.g. password resets, contact form submissions, order confirmations), the data (including the recipient's email address, sender information, email subject, and email body content) is transmitted securely to your configured provider in order to deliver the email. No data is sent if you have not configured an API key for a provider.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>magic-api-email<\/code> folder to the <code>\/wp-content\/plugins\/<\/code> directory, or install the plugin through the WordPress Plugins screen directly.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> screen in WordPress.<\/li>\n<li>Navigate to <strong>Magic API Email<\/strong> in the WordPress admin sidebar.<\/li>\n<li>Select your email provider, enter your API key, From Email, and From Name.<\/li>\n<li>Click <strong>Save Settings<\/strong>.<\/li>\n<li>Use the <strong>Send Test Email<\/strong> section to verify everything is working.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"which%20providers%20are%20supported%3F\"><h3>Which providers are supported?<\/h3><\/dt>\n<dd><p>Resend, Mailgun, Postmark, and Mailtrap are currently supported.<\/p><\/dd>\n<dt id=\"do%20i%20need%20to%20configure%20smtp%3F\"><h3>Do I need to configure SMTP?<\/h3><\/dt>\n<dd><p>No. Magic API Email sends emails directly through each provider's REST API, so no SMTP setup is required.<\/p><\/dd>\n<dt id=\"will%20switching%20providers%20erase%20my%20other%20provider%27s%20settings%3F\"><h3>Will switching providers erase my other provider's settings?<\/h3><\/dt>\n<dd><p>No. Each provider's API key, From Email, and From Name are stored separately. You can switch between providers freely without losing any credentials.<\/p><\/dd>\n<dt id=\"where%20do%20i%20get%20an%20api%20key%3F\"><h3>Where do I get an API key?<\/h3><\/dt>\n<dd><ul>\n<li><strong>Resend:<\/strong> <a href=\"https:\/\/resend.com\">resend.com<\/a> \u2014 Create an account and generate an API key in the dashboard.<\/li>\n<li><strong>Mailgun:<\/strong> <a href=\"https:\/\/mailgun.com\">mailgun.com<\/a> \u2014 Create an account, add a sending domain, and copy the API key.<\/li>\n<li><strong>Postmark:<\/strong> <a href=\"https:\/\/postmarkapp.com\">postmarkapp.com<\/a> \u2014 Create a Server and copy the Server API Token.<\/li>\n<li><strong>Mailtrap:<\/strong> <a href=\"https:\/\/mailtrap.io\">mailtrap.io<\/a> \u2014 Create an account and generate a sending API token.<\/li>\n<\/ul><\/dd>\n<dt id=\"what%20happens%20if%20i%20don%27t%20configure%20the%20plugin%3F\"><h3>What happens if I don't configure the plugin?<\/h3><\/dt>\n<dd><p>If the API key or From Email is empty, the plugin falls back to WordPress's default email handling \u2014 no emails are lost.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20support%20html%20emails%3F\"><h3>Does this plugin support HTML emails?<\/h3><\/dt>\n<dd><p>Yes. If WordPress or another plugin sends an email with a <code>Content-Type: text\/html<\/code> header, Magic API Email will send it as HTML to the provider.<\/p><\/dd>\n<dt id=\"where%20are%20errors%20logged%3F\"><h3>Where are errors logged?<\/h3><\/dt>\n<dd><p>API errors are written to the WordPress debug log (<code>wp-content\/debug.log<\/code>) with the prefix <code>[Magic API Email]<\/code>. Enable <code>WP_DEBUG_LOG<\/code> in <code>wp-config.php<\/code> to capture them.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Feature: Email logging \u2014 every outgoing email is now recorded in a custom database table with recipient, subject, provider, status, and error details.<\/li>\n<li>Feature: Logs tab \u2014 browse all email logs with a sortable, paginated WP_List_Table on the plugin settings page.<\/li>\n<li>Feature: Statistics tab \u2014 at-a-glance dashboard showing total emails sent, success\/failure counts, and per-provider usage breakdown.<\/li>\n<li>Enhancement: Admin settings page refactored into a native WordPress tabbed interface (Settings, Logs, Statistics).<\/li>\n<li>Enhancement: Sender class now captures and stores error messages for failed API requests.<\/li>\n<\/ul>\n\n<h4>1.0.12<\/h4>\n\n<ul>\n<li>Fix: Versioning conflict in the previous deployment package.<\/li>\n<\/ul>\n\n<h4>1.0.11<\/h4>\n\n<ul>\n<li>Feature: Added plugin banner and screenshots to the repository.<\/li>\n<li>Tweak: Updated plugin icon.<\/li>\n<li>Tweak: Bumped version to 1.0.11.<\/li>\n<\/ul>\n\n<h4>1.0.10<\/h4>\n\n<ul>\n<li>Feature: Added plugin icon.<\/li>\n<li>Tweak: Version bump for assets update.<\/li>\n<\/ul>\n\n<h4>1.0.9<\/h4>\n\n<ul>\n<li>Fix: Removed unnecessary <code>mu-plugins<\/code> directory.<\/li>\n<li>Tweak: Updated readme file for better documentation.<\/li>\n<\/ul>\n\n<h4>1.0.8<\/h4>\n\n<ul>\n<li>Fixed menu position to comply with WordPress.org guidelines (moved to Settings page).<\/li>\n<li>Added explicit documentation for external API services in README.<\/li>\n<li>Added <code>magicwpio<\/code> to contributors to verify plugin ownership.<\/li>\n<\/ul>\n\n<h4>1.0.7<\/h4>\n\n<ul>\n<li>Added Plunk provider support.<\/li>\n<\/ul>\n\n<h4>1.0.6<\/h4>\n\n<ul>\n<li>Fixed missing translators comment placement in test email handler.<\/li>\n<li>Replaced error_log() with wp_trigger_error() for production-safe logging.<\/li>\n<li>Removed discouraged load_plugin_textdomain() call (auto-loaded by WordPress.org).<\/li>\n<li>Added wp_unslash() before sanitize_email() on POST data.<\/li>\n<li>Deleted .DS_Store hidden file.<\/li>\n<\/ul>\n\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>Renamed plugin to Magic API Email.<\/li>\n<li>Added Author URI (https:\/\/magicwp.io).<\/li>\n<li>Added Text Domain and Domain Path headers for WordPress.org compliance.<\/li>\n<li>Added version and copyright footer to the settings page.<\/li>\n<li>Improved translators comments throughout for i18n compliance.<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Added Postmark provider support.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Added Mailtrap provider support.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Per-provider settings storage \u2014 API key, From Email, and From Name are now stored independently per provider.<\/li>\n<li>Fixed \"Request failed\" error when sending test emails after provider switch.<\/li>\n<li>Fixed fields being cleared when switching providers.<\/li>\n<li>Fixed \"Settings saved.\" notice not appearing on top-level menu pages.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Added Mailgun provider support.<\/li>\n<li>Fixed duplicate \"Settings saved.\" notice.<\/li>\n<li>Moved plugin to top-level admin menu with email icon.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release with Resend provider support.<\/li>\n<li>Settings page with API Key, From Email, and From Name.<\/li>\n<li>Test email functionality.<\/li>\n<li><code>wp_mail()<\/code> interception via <code>pre_wp_mail<\/code> filter.<\/li>\n<\/ul>","raw_excerpt":"Send WordPress emails through a transactional API provider: Resend, Mailgun, Postmark, or Mailtrap. No SMTP needed.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/284710","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=284710"}],"author":[{"embeddable":true,"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/magicwpio"}],"wp:attachment":[{"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=284710"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=284710"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=284710"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=284710"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=284710"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=284710"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}