{"id":352499,"date":"2026-09-01T18:18:48","date_gmt":"2026-09-01T18:18:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/volanea-smtp\/"},"modified":"2026-09-01T18:18:15","modified_gmt":"2026-09-01T18:18:15","slug":"volanea-email-delivery","status":"publish","type":"plugin","link":"https:\/\/pl.wordpress.org\/plugins\/volanea-email-delivery\/","author":23547663,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.1","requires":"5.7","requires_php":"7.2","requires_plugins":null,"header_name":"Volanea Email Delivery","header_author":"Volanea","header_description":"Routes wp_mail() through the Volanea HTTP API instead of PHP mail(). Falls back to the default WordPress mailer whenever a message cannot be sent, so site email is never silently dropped.","assets_banners_color":"f4f7f5","last_updated":"2026-09-01 18:18:15","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/volanea.com\/docs\/integrations\/wordpress","header_author_uri":"https:\/\/volanea.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":55,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"tmxsmoke","date":"2026-09-01 18:18:15","revision":3676625}},"upgrade_notice":{"1.0.0":"<p>First release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3676625,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3676625,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3676625,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3676625,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"The settings screen, with the connection fields and the test email button.","2":"The email log, showing recent sends and the reason for any fallback."}},"plugin_section":[],"plugin_tags":[17561,267,206386,48586,6695],"plugin_category":[41],"plugin_contributors":[278705],"plugin_business_model":[],"class_list":["post-352499","plugin","type-plugin","status-publish","hentry","plugin_tags-deliverability","plugin_tags-email","plugin_tags-email-api","plugin_tags-transactional-email","plugin_tags-wp_mail","plugin_category-communication","plugin_contributors-tmxsmoke","plugin_committers-tmxsmoke"],"banners":{"banner":"https:\/\/ps.w.org\/volanea-email-delivery\/assets\/banner-772x250.png?rev=3676625","banner_2x":"https:\/\/ps.w.org\/volanea-email-delivery\/assets\/banner-1544x500.png?rev=3676625","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/volanea-email-delivery\/assets\/icon-128x128.png?rev=3676625","icon_2x":"https:\/\/ps.w.org\/volanea-email-delivery\/assets\/icon-256x256.png?rev=3676625","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Volanea Email Delivery hands every <code>wp_mail()<\/code> call to the Volanea HTTP API, so password\nresets, order receipts, form notifications and everything else leave your site\nover an authenticated API connection rather than the server's local <code>mail()<\/code>\nbinary.<\/p>\n\n<p>The plugin does not speak SMTP. It uses Volanea's HTTPS API, which means there\nis no port to unblock and no SMTP password stored on the site.<\/p>\n\n<h4>Never silently dropped<\/h4>\n\n<p>The plugin only takes over a message it can send faithfully. If the API refuses\nthe message, the key is wrong, the network fails, or the message uses something\nthe API cannot express, the plugin steps aside and WordPress delivers it the way\nit always did. A failed send is never a lost send.<\/p>\n\n<h4>What it handles<\/h4>\n\n<ul>\n<li>To, Cc, Bcc and Reply-To<\/li>\n<li>HTML and plain text bodies, including the <code>wp_mail_content_type<\/code> filter<\/li>\n<li>Attachments (up to 10 per message)<\/li>\n<li>Custom headers such as <code>X-<\/code> headers<\/li>\n<li>Headers passed as either a string or an array, in any combination<\/li>\n<li>Recipient lists longer than the API's 50-address limit, split automatically<\/li>\n<\/ul>\n\n<h4>Known differences from the default mailer<\/h4>\n\n<p>These are worth reading before you switch a busy site over.<\/p>\n\n<ul>\n<li><strong>Cc and Bcc.<\/strong> The Volanea API has no Cc or Bcc field. The plugin gives each\ncopied address its own message, which is exactly right for Bcc: the copy\narrives and no one else can see it. A Cc recipient also receives the message,\nbut no visible <code>Cc:<\/code> header is present on any copy. If you need a real Cc\nheader, turn off \"Deliver Cc and Bcc recipients as individual copies\" and\nthose messages will go through the default WordPress mailer instead.<\/li>\n<li><strong>One message per recipient.<\/strong> A message addressed to several people is sent\nas a separate message to each, so recipients do not see one another.<\/li>\n<li><strong>Multiple Reply-To addresses.<\/strong> The API accepts one; the first is used.<\/li>\n<li><strong>Plain-text messages.<\/strong> The API renders a text-only body inside a <code>&lt;pre&gt;<\/code>\nblock, so plain-text email looks a little different from <code>mail()<\/code> output.<\/li>\n<li><strong>Hand-built multipart messages.<\/strong> A message that supplies its own MIME\nboundary is passed to the default mailer untouched.<\/li>\n<li><strong>A 200 response is not delivery.<\/strong> The API accepts the message and delivers\nit afterwards. The recipient may still be skipped for being suppressed,\nunsubscribed or over quota. Skips are recorded in the log and, deliberately,\nare not retried through <code>mail()<\/code>.<\/li>\n<\/ul>\n\n<h4>Storing the API key more safely<\/h4>\n\n<p>By default the key is stored in the options table. To keep it out of the\ndatabase entirely, add this to <code>wp-config.php<\/code>:<\/p>\n\n<pre><code>define( 'VOLANEA_EMAIL_DELIVERY_API_KEY', 'your-secret-key' );\n<\/code><\/pre>\n\n<p>The constant wins over anything saved in the admin, and the settings page then\nshows the key as read-only and masked.<\/p>\n\n<h4>Filters for developers<\/h4>\n\n<ul>\n<li><code>volanea_email_delivery_api_base<\/code> \u2014 change the API base URL, for staging.<\/li>\n<li><code>volanea_email_delivery_request_args<\/code> \u2014 adjust the <code>wp_remote_post()<\/code> arguments.<\/li>\n<li><code>volanea_email_delivery_payload<\/code> \u2014 modify the request body before it is sent.<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>This plugin sends your site's outgoing email to Volanea, a third-party email\ndelivery service, so that it can be delivered.<\/p>\n\n<p>It contacts <code>https:\/\/api.volanea.com<\/code> only when you have saved an API key, and\nonly at these moments:<\/p>\n\n<ul>\n<li>Every time WordPress sends an email while the plugin is configured.<\/li>\n<li>When you press \"Send test email\" on the settings screen.<\/li>\n<\/ul>\n\n<p>The data sent with each message is: the sender name and address, the recipient\naddresses, the subject, the message body, any custom headers set by the code\nthat sent the mail, and any attachments. No data is transmitted before you\nenter an API key.<\/p>\n\n<p>Volanea's terms of service: https:\/\/volanea.com\/legal\/terms\nVolanea's privacy policy: https:\/\/volanea.com\/legal\/privacy<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>volanea-email-delivery<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install the\nplugin through the Plugins screen.<\/li>\n<li>Activate the plugin.<\/li>\n<li>Go to <strong>Settings &gt; Volanea Email Delivery<\/strong>.<\/li>\n<li>Paste your Volanea secret key and set the From address. The From address must\nbe on a domain you have already verified in Volanea, or the API will refuse\nthe message.<\/li>\n<li>Press <strong>Send test email<\/strong> to confirm the connection.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20happens%20if%20volanea%20is%20unreachable%3F\"><h3>What happens if Volanea is unreachable?<\/h3><\/dt>\n<dd><p>The message goes out through the default WordPress mailer instead, exactly as it\nwould have if the plugin were not installed. Turn on the email log to see which\nmessages took that path and why.<\/p><\/dd>\n<dt id=\"my%20test%20email%20says%20%22test%20mode%3A%20nothing%20was%20delivered%22.\"><h3>My test email says \"test mode: nothing was delivered\".<\/h3><\/dt>\n<dd><p>You are using a test key. Test keys exercise the whole pipeline but never send\nanything to a real inbox. Swap in a live key to send real email.<\/p><\/dd>\n<dt id=\"the%20api%20says%20my%20from%20domain%20is%20not%20verified.\"><h3>The API says my From domain is not verified.<\/h3><\/dt>\n<dd><p>Volanea only sends from domains you have verified. Add and verify the domain in\nyour Volanea dashboard, then set the From address to an address on it.<\/p><\/dd>\n<dt id=\"does%20the%20log%20store%20the%20contents%20of%20my%20email%3F\"><h3>Does the log store the contents of my email?<\/h3><\/dt>\n<dd><p>No. It stores the recipient, the subject, the status and any error message for\nthe last 50 sends. Message bodies and attachments are never written to the log,\nand the log is off until you turn it on.<\/p><\/dd>\n<dt id=\"can%20i%20use%20this%20alongside%20an%20smtp%20plugin%3F\"><h3>Can I use this alongside an SMTP plugin?<\/h3><\/dt>\n<dd><p>It is not a good idea, but the plugin will not fight for the message: if another\nplugin has already claimed a message, Volanea Email Delivery leaves it alone.<\/p><\/dd>\n<dt id=\"will%20a%20failed%20send%20ever%20be%20delivered%20twice%3F\"><h3>Will a failed send ever be delivered twice?<\/h3><\/dt>\n<dd><p>The one case where it can is a request that times out after the API has already\naccepted the message. The plugin then treats the send as failed and lets\nWordPress retry it, which can produce a duplicate. This is rare, and the\nalternative \u2014 treating a timeout as a success \u2014 would risk losing mail instead.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First release.<\/li>\n<\/ul>","raw_excerpt":"Send WordPress email through the Volanea API instead of PHP mail(), with an automatic fallback so no message is ever lost.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/pl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/352499","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/pl.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/pl.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=352499"}],"author":[{"embeddable":true,"href":"https:\/\/pl.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/tmxsmoke"}],"wp:attachment":[{"href":"https:\/\/pl.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=352499"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/pl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=352499"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/pl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=352499"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/pl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=352499"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/pl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=352499"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/pl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=352499"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}