Tengo un flujo de trabajo de desarrollo, puesta en escena y servidor en vivo configurado en Pantheon. Mi sitio tiene muchas reglas que hacen que los miembros sean enviados por correo electrónico por varias razones. A veces necesito trabajar en estos en mis sitios de desarrollo / preparación, pero me he dado cuenta de que, dado que tienen los datos en vivo, a veces los usuarios recibirán correos electrónicos adicionales o duplicados cuando estoy trabajando en algo.
¿Hay alguna manera fácil de desactivar toda la capacidad de correo electrónico (preferiblemente automáticamente para evitar que me olvide) en un servidor de desarrollo / preparación? Idealmente, me gustaría deshabilitar el correo electrónico a través de un módulo personalizado, ya que ya tengo los pasos establecidos para asegurarme de que un módulo personalizado esté habilitado en dev / staging.
git update-index --assume-unchanged sites/default/settings.php
para evitar que settings.php sea empujado por diferentes entornos. Algunas personas prefieren una lógica condicional que verifica la configuración del entorno e incluye diferentes archivos conf basados en el entorno (al igual que cualquier otro marco web existente, en cualquier idioma). El único límite aquí es la imaginación de uno, es algo básico de PHP / git, no es necesario agregarlo a las respuestassites/default/settings.php
, hazlogit update-index --skip-worktree sites/default/settings.php
. Con--assume-unchanged
, pierdes los cambios que hiciste en settings.php si haces ungit reset --hard
. Ver stackoverflow.com/questions/13630849/…Respuestas:
Como otra opción más rápida, puede agregar las siguientes líneas al archivo settings.php de su sitio (si tiene instalado el módulo Devel, lo que ciertamente debería hacer si este es un sitio de desarrollo).
Eso reemplazará el sistema de correo predeterminado con el sistema de correo de desarrollo de Devel, que escribe correos electrónicos en un registro de archivos en lugar de enviarlos a un destinatario. De manera predeterminada, los archivos se almacenan
temporary://devel-mails
, pero puede modificarlos configurando otra variable, por ejemplo.fuente
Solo una nota para agregar otro módulo a la lista "Hay un módulo para eso":
Estoy de acuerdo en que esta funcionalidad se puede implementar fácilmente con unas pocas líneas de código, pero al usar este módulo, podría continuar recibiendo correos electrónicos a una dirección predefinida, con detalles sobre el destinatario original, buena funcionalidad.
fuente
O puede usar hook_mail_alter para redirigir o evitar correos drupal:
fuente
git commit .
o algo similar.Drupal 8
Para Drupal 8, puede activar el controlador de correo del módulo Devel a través del sistema de configuración.
Con
drush
eso sería:fuente
settings.local.php
:$config['system.mail']['interface']['default'] = 'devel_mail_log';
$config['devel.settings']['debug_mail_directory'] = 'temporary://my-directory';
.Usualmente uso el módulo Reroute Email para este caso. Puede redirigir todo el correo electrónico desde el desarrollador a cierto correo electrónico. El correo electrónico enviado también especifica a dónde se debe enviar este correo electrónico.
fuente
Esto funcionará sin desarrollo y es seguro en los tres entornos.
Agregue esto en settings.php. Cópielo y cambie el entorno a
test
Prueba.Luego en mymodule:
El crédito por la idea de correo alterno va a http://www.jaypan.com/tutorial/preventing-emails-being-sent-drupal-7-development-environment .
fuente
Creo que el módulo Redirigir correo es perfecto para usted :) Otra forma sucia es instalar el módulo SMTP y configurar un smtp incorrecto;)
fuente
https://api.drupal.org/api/drupal/modules!system!system.api.php/function/hook_mail_alter/7
fuente
Por lo tanto, puede poner esto en su settings.php o settings.local.php si tiene unos específicos para dev, puesta en escena y producción.
fuente
Suponiendo que está utilizando el módulo Mailsystem , simplemente vaya
admin/config/system/mailsystem
y seleccioneDevelMailLog
.fuente
Puesta a punto de su SMTP para
localhost
e instalar MailCatcher ( GitHub ) que atrapa cualquier mensaje enviado a él para la exhibición en una interfaz web.Instalación
gem install mailcatcher
mailcatcher
Configure su
sendmail_path
en PHP para:o en la configuración de Apache :
Ir
http://localhost:1080/
smtp://localhost:1025
En Drush puedes hacer como:
fuente
si no desea tocar las configuraciones de Drupal, configure MailHog en su servidor para capturar todos los correos electrónicos que salen de su aplicación.
fuente
Habilite el módulo de soporte de autenticación SMTP y puede apagar directamente su servidor de correo SMTP en
admin/config/system/smtp
.fuente