M+M Mailing is a WordPress email marketing plugin for managing contacts, mailing lists, campaigns, templates, delivery queues and campaign performance.
Features include:
Contact and list management.
CSV contact import with field mapping.
Campaign builder and HTML email editor.
Scheduled campaigns.
Background delivery through WordPress Cron.
Configurable SMTP delivery through WordPress PHPMailer.
Sending queue with retries and error logging.
Open and click tracking.
Unsubscribe and spam-report tracking links.
Campaign statistics and delivery KPIs.
Test email delivery.
Custom contact fields.
Campaign attachments.
M+M Mailing uses WordPress APIs and does not require external JavaScript CDNs.
1.2.62
CORRECCIÓN: el Constructor de campañas queda registrado como página administrativa real y ya no se elimina del árbol de submenús, evitando el mensaje de WordPress “Sorry, you are not allowed to access this page.” al abrir admin.php?page=mm-campaign-builder.
MEJORA: añadido un control de permisos explícito dentro del callback del Constructor de campañas.
MANTENIMIENTO: sincronizada la versión del esquema interno con la versión 1.2.62.
1.2.61
CORRECCIÓN: añadido uninstall.php para eliminar todas las tablas propias de M+M Mailing al desinstalar el plugin.
CORRECCIÓN: también se eliminan opciones, previsualizaciones temporales, transients y eventos WP-Cron propios del plugin.
CORRECCIÓN: inicialización temprana de los filtros de Suscriptores para evitar warnings de variables indefinidas en PHP 8.x.
CORRECCIÓN: optimizada la bandera de plantillas predeterminadas para evitar consultas repetidas en cada carga.
MEJORA: el diagnóstico del sistema verifica todas las tablas utilizadas por el plugin.
1.2.60
CORRECCIÓN: el Builder de campañas se registra con un parent válido y se oculta del menú después del registro, evitando valores NULL en get_admin_page_title() de WordPress/PHP 8.2+.
CORRECCIÓN: eliminada la sobrecarga de admin_title que no podía prevenir el warning de strip_tags() porque ocurría antes del filtro.
CORRECCIÓN: sincronizados todos los argumentos de la consulta preparada de Estadísticas con sus 58 placeholders.
PRESERVADO: corrección de campos personalizados de suscriptores al editar contactos.
1.2.59
CORRECCIÓN: ajustados los argumentos de la consulta preparada de Estadísticas para que coincidan exactamente con sus placeholders.
CORRECCIÓN: sincronizada la versión del plugin con Stable tag.
PRESERVADO: corrección de campos personalizados de suscriptores al editar contactos.
1.2.58
CORRECCIÓN: mejoras de diagnóstico y compatibilidad del administrador.
1.3.1
MEJORA: administración bilingüe Español / English según el idioma de WordPress.
AGREGADO: infraestructura i18n, Text Domain y catálogos de idioma.
MEJORA: navegación principal traducible y traducción automática de etiquetas administrativas heredadas.
1.2.56
Plugin Check: corrected remaining dynamic ORDER BY warnings in Segments, Logs and Statistics using fully prepared static SQL ordering conditions.
Preserved existing sorting ASC/DESC, search, filters and pagination.
No campaign selection or statistics functionality was removed.
1.2.52
Plugin Check: resolved the remaining PreparedSQL.NotPrepared report in the selected-list CSV export query.
The dynamically sized IN() placeholder list is generated only from validated integer list IDs and prepared immediately before execution.
Synchronized plugin header, version constant and stable tag to 1.2.52.
1.2.51
Corrected remaining dynamic ORDER BY queries reported by Plugin Check.
Preserved campaign selection, pagination, search and existing functionality.
1.2.50
Sanitized dynamic ORDER BY handling in campaigns, templates, lists, custom fields and subscribers.
Reworked campaign-list relationship queries to use identifier and value placeholders.
Hardened subscriber CSV export queries and synchronized plugin metadata.
1.2.39
Fixed the two remaining PreparedSQL.NotPrepared errors in the campaign builder list queries.
Sanitized campaign list IDs as integers before constructing IN() clauses.
Kept dynamic table identifiers and contact status handling inside prepared queries.
Updated the in-plugin changelog shown at admin.php?page=mm-changelog.
1.2.38
Improved nonce validation and input handling in AJAX/contact search and campaign builder.
Hardened dynamic table identifiers and queue update queries.
Improved prepared SQL handling for campaign list queries.
Added lightweight caching to the import screen data lookups.
Improved database safety checks during table verification.
1.2.36
Hardened admin request handling with explicit input checks, unslashing and sanitization in fields, lists, segments, campaigns, templates and shortcodes.
Removed dead dynamic SQL filter construction from the queue screen and kept queue queries on prepared statements.
Improved prepared SQL handling for plugin-controlled table identifiers and pagination values.
Added nonce protection to custom-field management actions.
Improved tracking and unsubscribe/spam request input handling without changing mailing behavior.
1.2.33
Hardened admin input handling with explicit unslash and sanitization for settings, lists, segments, subscribers, templates and queue actions.
Reworked dynamic queue/list queries to use prepared statements and identifier placeholders.
Added proper segment edit/update handling and nonce protection.
Fixed pagination queries in campaigns and templates.
Improved queue action nonce handling and search/filter sanitization.