{"id":359895,"date":"2026-09-17T05:14:49","date_gmt":"2026-09-17T05:14:49","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/mm-mailing\/"},"modified":"2026-09-17T05:14:31","modified_gmt":"2026-09-17T05:14:31","slug":"mm-mailing","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/mm-mailing\/","author":23551560,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.3.3","stable_tag":"1.3.3","tested":"7.1.1","requires":"6.5","requires_php":"7.4","requires_plugins":null,"header_name":"M+M Mailing","header_author":"NET360","header_description":"Email marketing, campaigns, contacts, lists, queue processing and campaign statistics for WordPress. | Por <a href=\"https:\/\/net360.pe\" target=\"_blank\">NET360<\/a> | <a href=\"mailto:soporte@net360.pe\">Soporte<\/a> | <a href=\"https:\/\/www.paypal.com\/ncp\/payment\/B4F9S7TJSFF4S\" target=\"_blank\">Donaciones<\/a>.","assets_banners_color":"ffffff","last_updated":"2026-09-17 05:14:31","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":34,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.3.3":{"tag":"1.3.3","author":"net360pe","date":"2026-09-17 05:14:31","revision":3699569}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3699560,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3699560,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3699560,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3699560,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.3.3"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3699560,"resolution":"1","location":"assets","locale":"","width":1625,"height":799},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3699560,"resolution":"2","location":"assets","locale":"","width":1629,"height":695},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3699560,"resolution":"3","location":"assets","locale":"","width":1669,"height":642},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3699560,"resolution":"4","location":"assets","locale":"","width":1628,"height":679},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3699560,"resolution":"5","location":"assets","locale":"","width":1633,"height":782}},"screenshots":[]},"plugin_section":[],"plugin_tags":[7644,264,2522,455,6696],"plugin_category":[41,42],"plugin_contributors":[281186],"plugin_business_model":[],"class_list":["post-359895","plugin","type-plugin","status-publish","hentry","plugin_tags-campaigns","plugin_tags-email-marketing","plugin_tags-mailing","plugin_tags-newsletter","plugin_tags-smtp","plugin_category-communication","plugin_category-contact-forms","plugin_contributors-net360","plugin_committers-net360pe"],"banners":{"banner":"https:\/\/ps.w.org\/mm-mailing\/assets\/banner-772x250.png?rev=3699560","banner_2x":"https:\/\/ps.w.org\/mm-mailing\/assets\/banner-1544x500.png?rev=3699560","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/mm-mailing\/assets\/icon-128x128.png?rev=3699560","icon_2x":"https:\/\/ps.w.org\/mm-mailing\/assets\/icon-256x256.png?rev=3699560","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/mm-mailing\/assets\/screenshot-1.png?rev=3699560","caption":""},{"src":"https:\/\/ps.w.org\/mm-mailing\/assets\/screenshot-2.png?rev=3699560","caption":""},{"src":"https:\/\/ps.w.org\/mm-mailing\/assets\/screenshot-3.png?rev=3699560","caption":""},{"src":"https:\/\/ps.w.org\/mm-mailing\/assets\/screenshot-4.png?rev=3699560","caption":""},{"src":"https:\/\/ps.w.org\/mm-mailing\/assets\/screenshot-5.png?rev=3699560","caption":""}],"raw_content":"<!--section=description-->\n<p>M+M Mailing is a WordPress email marketing plugin for managing contacts, mailing lists, campaigns, templates, delivery queues and campaign performance.<\/p>\n\n<p>Features include:<\/p>\n\n<ul>\n<li>Contact and list management.<\/li>\n<li>CSV contact import with field mapping.<\/li>\n<li>Campaign builder and HTML email editor.<\/li>\n<li>Scheduled campaigns.<\/li>\n<li>Background delivery through WordPress Cron.<\/li>\n<li>Configurable SMTP delivery through WordPress PHPMailer.<\/li>\n<li>Sending queue with retries and error logging.<\/li>\n<li>Open and click tracking.<\/li>\n<li>Unsubscribe and spam-report tracking links.<\/li>\n<li>Campaign statistics and delivery KPIs.<\/li>\n<li>Test email delivery.<\/li>\n<li>Custom contact fields.<\/li>\n<li>Campaign attachments.<\/li>\n<\/ul>\n\n<p>M+M Mailing uses WordPress APIs and does not require external JavaScript CDNs.<\/p>\n\n<h3>1.2.62<\/h3>\n\n<ul>\n<li>CORRECCI\u00d3N: el Constructor de campa\u00f1as queda registrado como p\u00e1gina administrativa real y ya no se elimina del \u00e1rbol de submen\u00fas, evitando el mensaje de WordPress \"Sorry, you are not allowed to access this page.\" al abrir admin.php?page=mm-campaign-builder.<\/li>\n<li>MEJORA: a\u00f1adido un control de permisos expl\u00edcito dentro del callback del Constructor de campa\u00f1as.<\/li>\n<li>MANTENIMIENTO: sincronizada la versi\u00f3n del esquema interno con la versi\u00f3n 1.2.62.<\/li>\n<\/ul>\n\n<h3>1.2.61<\/h3>\n\n<ul>\n<li>CORRECCI\u00d3N: a\u00f1adido uninstall.php para eliminar todas las tablas propias de M+M Mailing al desinstalar el plugin.<\/li>\n<li>CORRECCI\u00d3N: tambi\u00e9n se eliminan opciones, previsualizaciones temporales, transients y eventos WP-Cron propios del plugin.<\/li>\n<li>CORRECCI\u00d3N: inicializaci\u00f3n temprana de los filtros de Suscriptores para evitar warnings de variables indefinidas en PHP 8.x.<\/li>\n<li>CORRECCI\u00d3N: optimizada la bandera de plantillas predeterminadas para evitar consultas repetidas en cada carga.<\/li>\n<li>MEJORA: el diagn\u00f3stico del sistema verifica todas las tablas utilizadas por el plugin.<\/li>\n<\/ul>\n\n<h3>1.2.60<\/h3>\n\n<ul>\n<li>CORRECCI\u00d3N: el Builder de campa\u00f1as se registra con un parent v\u00e1lido y se oculta del men\u00fa despu\u00e9s del registro, evitando valores NULL en get_admin_page_title() de WordPress\/PHP 8.2+.<\/li>\n<li>CORRECCI\u00d3N: eliminada la sobrecarga de admin_title que no pod\u00eda prevenir el warning de strip_tags() porque ocurr\u00eda antes del filtro.<\/li>\n<li>CORRECCI\u00d3N: sincronizados todos los argumentos de la consulta preparada de Estad\u00edsticas con sus 58 placeholders.<\/li>\n<li>PRESERVADO: correcci\u00f3n de campos personalizados de suscriptores al editar contactos.<\/li>\n<\/ul>\n\n<h4>1.2.59<\/h4>\n\n<ul>\n<li>CORRECCI\u00d3N: ajustados los argumentos de la consulta preparada de Estad\u00edsticas para que coincidan exactamente con sus placeholders.<\/li>\n<li>CORRECCI\u00d3N: sincronizada la versi\u00f3n del plugin con Stable tag.<\/li>\n<li>PRESERVADO: correcci\u00f3n de campos personalizados de suscriptores al editar contactos.<\/li>\n<\/ul>\n\n<h4>1.2.58<\/h4>\n\n<ul>\n<li>CORRECCI\u00d3N: mejoras de diagn\u00f3stico y compatibilidad del administrador.<\/li>\n<\/ul>\n\n<h4>1.3.1<\/h4>\n\n<ul>\n<li>MEJORA: administraci\u00f3n biling\u00fce Espa\u00f1ol \/ English seg\u00fan el idioma de WordPress.<\/li>\n<li>AGREGADO: infraestructura i18n, Text Domain y cat\u00e1logos de idioma.<\/li>\n<li>MEJORA: navegaci\u00f3n principal traducible y traducci\u00f3n autom\u00e1tica de etiquetas administrativas heredadas.<\/li>\n<\/ul>\n\n<h4>1.2.56<\/h4>\n\n<ul>\n<li>Plugin Check: corrected remaining dynamic ORDER BY warnings in Segments, Logs and Statistics using fully prepared static SQL ordering conditions.<\/li>\n<li>Preserved existing sorting ASC\/DESC, search, filters and pagination.<\/li>\n<li>No campaign selection or statistics functionality was removed.<\/li>\n<\/ul>\n\n<h4>1.2.52<\/h4>\n\n<ul>\n<li>Plugin Check: resolved the remaining PreparedSQL.NotPrepared report in the selected-list CSV export query.<\/li>\n<li>The dynamically sized IN() placeholder list is generated only from validated integer list IDs and prepared immediately before execution.<\/li>\n<li>Synchronized plugin header, version constant and stable tag to 1.2.52.<\/li>\n<\/ul>\n\n<h4>1.2.51<\/h4>\n\n<ul>\n<li>Corrected remaining dynamic ORDER BY queries reported by Plugin Check.<\/li>\n<li>Preserved campaign selection, pagination, search and existing functionality.<\/li>\n<\/ul>\n\n<h4>1.2.50<\/h4>\n\n<ul>\n<li>Sanitized dynamic ORDER BY handling in campaigns, templates, lists, custom fields and subscribers.<\/li>\n<li>Reworked campaign-list relationship queries to use identifier and value placeholders.<\/li>\n<li>Hardened subscriber CSV export queries and synchronized plugin metadata.<\/li>\n<\/ul>\n\n<h4>1.2.39<\/h4>\n\n<ul>\n<li>Fixed the two remaining PreparedSQL.NotPrepared errors in the campaign builder list queries.<\/li>\n<li>Sanitized campaign list IDs as integers before constructing IN() clauses.<\/li>\n<li>Kept dynamic table identifiers and contact status handling inside prepared queries.<\/li>\n<li>Updated the in-plugin changelog shown at admin.php?page=mm-changelog.<\/li>\n<\/ul>\n\n<h4>1.2.38<\/h4>\n\n<ul>\n<li>Improved nonce validation and input handling in AJAX\/contact search and campaign builder.<\/li>\n<li>Hardened dynamic table identifiers and queue update queries.<\/li>\n<li>Improved prepared SQL handling for campaign list queries.<\/li>\n<li>Added lightweight caching to the import screen data lookups.<\/li>\n<li>Improved database safety checks during table verification.<\/li>\n<\/ul>\n\n<h3>1.2.36<\/h3>\n\n<ul>\n<li>Hardened admin request handling with explicit input checks, unslashing and sanitization in fields, lists, segments, campaigns, templates and shortcodes.<\/li>\n<li>Removed dead dynamic SQL filter construction from the queue screen and kept queue queries on prepared statements.<\/li>\n<li>Improved prepared SQL handling for plugin-controlled table identifiers and pagination values.<\/li>\n<li>Added nonce protection to custom-field management actions.<\/li>\n<li>Improved tracking and unsubscribe\/spam request input handling without changing mailing behavior.<\/li>\n<\/ul>\n\n<h3>1.2.33<\/h3>\n\n<ul>\n<li>Hardened admin input handling with explicit unslash and sanitization for settings, lists, segments, subscribers, templates and queue actions.<\/li>\n<li>Reworked dynamic queue\/list queries to use prepared statements and identifier placeholders.<\/li>\n<li>Added proper segment edit\/update handling and nonce protection.<\/li>\n<li>Fixed pagination queries in campaigns and templates.<\/li>\n<li>Improved queue action nonce handling and search\/filter sanitization.<\/li>\n<li>Improved campaign\/list\/template bulk-action database safety.<\/li>\n<\/ul>\n\n<h3>1.2.31<\/h3>\n\n<ul>\n<li>Fixed the Stable tag mismatch so the readme version matches the plugin header.<\/li>\n<li>Hardened database checks and dynamic queries used by the admin system, statistics and template screens.<\/li>\n<li>Improved Plugin Check compatibility for database parameter handling.<\/li>\n<li>Continued cleanup of database query patterns to reduce false-positive security warnings.<\/li>\n<\/ul>\n\n<h3>1.2.26<\/h3>\n\n<ul>\n<li>Added three starter email templates: Welcome, Special Promotion and Monthly Newsletter.<\/li>\n<li>Added safe one-time template seeding for new and existing installations without overwriting user-created templates.<\/li>\n<li>Improved the CSV import example with neutral sample contact data.<\/li>\n<\/ul>\n\n<h3>1.2.25<\/h3>\n\n<ul>\n<li>Fixed bulk list deletion by removing contact and campaign relationships before deleting lists.<\/li>\n<li>Deleting a list no longer deletes subscribers; it only removes their relationship with that list.<\/li>\n<li>Added CSV import recommendations covering file format, UTF-8 encoding, headers, required email field, separators and file-size limits.<\/li>\n<li>Added import-file validation guidance with a 10 MB recommended size and a 25 MB screen limit.<\/li>\n<\/ul>\n\n<h3>1.2.24<\/h3>\n\n<ul>\n<li>Fixed list selection for Duplicate and Delete actions.<\/li>\n<li>Improved the visual presentation of CSV import mode options.<\/li>\n<li>The list subscriber view now shows all available standard and custom fields.<\/li>\n<\/ul>\n\n<h3>1.2.22<\/h3>\n\n<ul>\n<li>Unsubscribe changes the contact to Unsubscribed and excludes it from future sends.<\/li>\n<li>Spam reporting records the complaint and blocks the contact from future mailings.<\/li>\n<li>Added subscriber states for unsubscribe and spam.<\/li>\n<li>Added friendly URLs and secure tokens for unsubscribe and spam reporting.<\/li>\n<li>Added List-Unsubscribe and List-Unsubscribe-Post headers.<\/li>\n<\/ul>\n\n<h3>1.2.21<\/h3>\n\n<ul>\n<li>Version visible across all plugin views.<\/li>\n<li>New Cambios y mejoras tab with version history.<\/li>\n<li>\ud83d\ude80 Cola de Env\u00edo label and per-campaign processing controls.<\/li>\n<\/ul>\n\n<h4>1.2.14<\/h4>\n\n<ul>\n<li>Hardened dynamic SQL filters in subscriber exports, logs, segments and campaign queue generation.<\/li>\n<li>Reworked campaign-builder list selection to use prepared placeholders.<\/li>\n<li>Improved subscriber filtering and ordering query construction.<\/li>\n<li>Reduced Plugin Check database-query findings without changing campaign delivery behavior.<\/li>\n<\/ul>\n\n<h4>1.2.7<\/h4>\n\n<ul>\n<li>Reworked queue, delivery tracking and test-email handling.<\/li>\n<li>Added reliable WYSIWYG template editing and campaign template loading.<\/li>\n<li>Hardened database queries, scheduled-date handling and tracking pixel delivery.<\/li>\n<li>Added manual queue processing safeguards and improved campaign completion states.<\/li>\n<\/ul>\n\n<h4>1.2.3<\/h4>\n\n<ul>\n<li>Improved WordPress output escaping across admin screens.<\/li>\n<li>Improved campaign builder attachment output escaping.<\/li>\n<li>Improved system diagnostics output escaping.<\/li>\n<li>Updated WYSIWYG campaign editor compatibility.<\/li>\n<\/ul>\n\n<h4>1.2.2<\/h4>\n\n<ul>\n<li>Hardened campaign admin output escaping and safe admin URLs.<\/li>\n<li>Replaced nonce field echoing with direct WordPress nonce output.<\/li>\n<li>Improved campaign pagination and metric output escaping.<\/li>\n<li>Replaced JavaScript redirects with safe WordPress redirects.<\/li>\n<\/ul>\n\n<h4>1.2.1<\/h4>\n\n<ul>\n<li>Reworked queue processing with stale-job recovery and real delivery error capture.<\/li>\n<li>Fixed scheduled campaign queue generation.<\/li>\n<li>Corrected campaign statistics to use sent queue messages as the delivery denominator.<\/li>\n<li>Added a native WordPress WYSIWYG\/HTML editor for campaign and template content.<\/li>\n<li>Added template preview and safer template editing.<\/li>\n<li>Improved queue and campaign completion handling.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Fixed campaign queue creation and background processing.<\/li>\n<li>Fixed tracking schema required by open and click statistics.<\/li>\n<li>Added queue retry handling and email delivery logs.<\/li>\n<li>Fixed scheduled campaign queue creation.<\/li>\n<li>Corrected campaign KPI denominators to use successfully sent messages.<\/li>\n<li>Added database migrations for existing installations.<\/li>\n<li>Removed external JavaScript CDN dependencies from the admin.<\/li>\n<li>Added GPL license metadata and WordPress.org readme information.<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>mm-mailing<\/code> folder to <code>\/wp-content\/plugins\/<\/code> or install the ZIP from the WordPress admin.<\/li>\n<li>Activate M+M Mailing from Plugins.<\/li>\n<li>Open M+M Mailing in the WordPress admin.<\/li>\n<li>Configure the sender and, if required, SMTP settings.<\/li>\n<li>Create a list and import or add contacts.<\/li>\n<li>Create a campaign and send it immediately or schedule it.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"why%20are%20emails%20not%20being%20sent%3F\"><h3>Why are emails not being sent?<\/h3><\/dt>\n<dd><p>Check the sender settings, SMTP configuration and the WordPress Cron status. The Queue page also shows pending and failed messages.<\/p><\/dd>\n<dt id=\"can%20i%20schedule%20a%20campaign%3F\"><h3>Can I schedule a campaign?<\/h3><\/dt>\n<dd><p>Yes. A scheduled campaign creates its queue immediately and waits until the configured date and time before delivery.<\/p><\/dd>\n<dt id=\"how%20are%20opens%20tracked%3F\"><h3>How are opens tracked?<\/h3><\/dt>\n<dd><p>The plugin adds a first-party tracking pixel to sent HTML emails. Open tracking depends on the recipient's email client loading images.<\/p><\/dd>\n<dt id=\"how%20are%20clicks%20tracked%3F\"><h3>How are clicks tracked?<\/h3><\/dt>\n<dd><p>Links in HTML campaigns are routed through the site's tracking endpoint before the visitor is redirected to the original destination.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.3.3<\/h4>\n\n<ul>\n<li>CORRECCI\u00d3N: actualizaci\u00f3n de numeraci\u00f3n de versi\u00f3n para la publicaci\u00f3n de WordPress.org.<\/li>\n<li>PRESERVADO: todas las funcionalidades y correcciones de la versi\u00f3n estable 1.2.62, sin cambios funcionales.<\/li>\n<\/ul>","raw_excerpt":"Email marketing tools for WordPress with contacts, lists, campaign queues, scheduled delivery and campaign statistics.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/359895","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=359895"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/net360pe"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=359895"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=359895"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=359895"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=359895"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=359895"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=359895"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}