Mime Mail
Un módulo de componente MIME Mail que envía correos electrónicos HTML con imágenes incrustadas y archivos adjuntos, con soporte para integración de temas y preferencias de texto plano por usuario.
mimemail
Install
composer require 'drupal/mimemail:^2.0'
Overview
Mime Mail es un módulo de correo electrónico completo que permite a Drupal enviar correos electrónicos HTML codificados en MIME con imágenes incrustadas y archivos adjuntos. Funciona tanto como un módulo de componente (API para otros módulos) como proporcionando su propia interfaz de configuración.
El módulo transforma el correo estándar de Drupal en correos electrónicos HTML enriquecidos mediante la codificación MIME del cuerpo del mensaje, incrustando automáticamente imágenes locales como adjuntos MIME e incluyendo las hojas de estilo de tu tema para una imagen de marca consistente. Cuando un destinatario prefiere texto plano (configurable por usuario mediante un campo booleano), el contenido HTML se convierte automáticamente a texto plano.
Mime Mail soporta plantillas temáticas con sugerencias basadas en el módulo remitente y la clave del correo, permitiendo a los constructores de sitios crear plantillas de correo personalizadas para tipos específicos de notificaciones. También ofrece una función opcional de CSS en línea (mediante el submódulo mimemail_compress) para garantizar la compatibilidad con clientes de correo como Gmail y Outlook 2007.
Features
- Envía correos electrónicos HTML codificados en MIME con soporte completo para imágenes incrustadas y archivos adjuntos
- Incluye automáticamente las hojas de estilo CSS del tema o utiliza un archivo mail.css dedicado para el estilo del correo
- Soporta preferencia de texto plano por usuario mediante un campo booleano configurable en los perfiles de usuario
- Proporciona plantillas de correo temáticas con sugerencias basadas en el módulo y la clave del correo (mimemail-message--[module]--[key].html.twig)
- Convierte automáticamente las URLs de imágenes locales a referencias Content-ID para incrustación en línea
- Soporta tanto adjuntos de archivos por ruta como contenido dinámico con detección de tipo MIME
- Maneja el formato de direcciones de correo compatible con RFC2822 con nombres para mostrar y codificación UTF-8
- Opción para enlazar imágenes externamente en lugar de incrustarlas para reducir el tamaño del correo
- Nombre del remitente y dirección de correo configurables para consistencia en todo el sitio
- Capacidad avanzada de procesamiento de mensajes entrantes para flujos de trabajo basados en correo
Use Cases
Envío de boletines HTML con marca
Usa Mime Mail con un archivo mail.css personalizado en tu tema para enviar boletines visualmente consistentes. El módulo incluye automáticamente los estilos de tu tema y puede incrustar imágenes directamente en el correo para visualización sin conexión.
Correos transaccionales con adjuntos
Envía confirmaciones de pedidos, facturas o informes con adjuntos PDF. Usa el parámetro attachments en hook_mail() para incluir archivos por ruta o contenido generado dinámicamente.
Formato de correo preferido por usuario
Crea un campo booleano en los perfiles de usuario (ej. 'Preferir correo en texto plano') y configura Mime Mail para respetar esta preferencia. Los usuarios que lo habiliten recibirán versiones en texto plano de todos los correos.
Plantillas de correo específicas por módulo
Crea plantillas de correo dirigidas como mimemail-message--commerce--order-receipt.html.twig para personalizar la apariencia de tipos específicos de correo mientras mantienes una plantilla base consistente para otros.
Prueba de configuración de correo
Habilita el submódulo Ejemplo de Mime Mail para acceder a un formulario de prueba en /admin/config/system/mimemail/mimemail_example donde puedes enviar correos de prueba con adjuntos para verificar tu configuración de correo.
Tips
- Crea un archivo mail.css en el directorio raíz de tu tema para estilos específicos de correo que no afectarán la apariencia de tu sitio web
- Usa el patrón de nombres mimemail-message--[module]--[key].html.twig para crear plantillas dirigidas a tipos específicos de correo
- Cuando incrustes imágenes, usa stream wrappers como public://imagen.jpg en lugar de URLs completas para una incrustación confiable
- Prueba los correos con el submódulo Ejemplo de Mime Mail antes de desplegar a producción
- Considera la opción 'Solo enlazar imágenes' para boletines para reducir el tamaño del correo y mejorar la entregabilidad
Technical Details
Admin Pages 1
/admin/config/system/mimemail
Página de configuración global para los ajustes de Mime Mail incluyendo información del remitente, opciones de estilo y funciones avanzadas.
Permissions 2
Hooks 2
hook_mail
Hook de correo estándar de Drupal. Cuando se usa Mime Mail, el array $params puede incluir claves adicionales para controlar el formato del correo.
hook_mail_alter
Permite a los módulos alterar el correo saliente antes de enviarlo. Se puede usar para añadir adjuntos, modificar cabeceras o cambiar el formato del mensaje.
Troubleshooting 5
Asegúrate de que Mail System esté configurado para usar 'Mime Mail mailer' como formateador y remitente. Verifica que 'Enviar solo correo en texto plano' esté deshabilitado en los ajustes de Mime Mail.
Usa URLs relativas o stream wrappers (public://) para las imágenes en lugar de URLs absolutas. Verifica que 'Solo enlazar imágenes' esté deshabilitado. Solo los archivos en el directorio de archivos públicos pueden incrustarse a menos que el remitente tenga el permiso 'send arbitrary files'.
Algunos clientes de correo (Gmail, Outlook 2007) solo soportan CSS en línea. Considera habilitar el módulo mimemail_compress para convertir CSS a estilos en línea. Verifica que tu archivo mail.css exista en el directorio del tema.
Habilita 'Usar formato de dirección simple' en los ajustes de Mime Mail si no tienes una solución SMTP instalada. Los servidores Windows requieren manejo especial para direcciones con formato RFC2822.
Verifica el ajuste 'Formato de correo' y asegúrate de que el formato de texto seleccionado tenga el filtro 'Convertir URLs en enlaces' habilitado con una longitud máxima de enlace suficiente.
Security Notes 4
- El permiso 'send arbitrary files' permite acceso a cualquier archivo en el servidor incluyendo archivos sensibles como settings.php - otorgar solo a roles altamente confiables
- El procesamiento de mensajes entrantes (ajuste avanzado) solo debe habilitarse si entiendes las implicaciones de seguridad y has configurado correctamente la validación
- La clave de validación de mensajes para mensajes entrantes debe mantenerse secreta y cambiarse si se compromete
- Los archivos adjuntos están restringidos al directorio de archivos públicos por defecto por seguridad - esto es intencional