J'ai un flux de travail de développement, de mise en scène et de serveur en direct configuré sur Pantheon. Mon site comporte de nombreuses règles qui obligent les membres à être envoyés par courrier électronique pour diverses raisons. J'ai parfois besoin de travailler dessus sur mes sites de développement / staging mais j'ai réalisé que, comme ils ont les données en direct, les utilisateurs recevront parfois des e-mails supplémentaires ou en double lorsque je travaille sur quelque chose.
Existe-t-il un moyen simple de désactiver toutes les fonctionnalités de messagerie (de préférence automatiquement pour m'empêcher d'oublier) sur un serveur de développement / de transfert? Idéalement, j'aimerais désactiver le courrier électronique via un module personnalisé, car j'ai déjà des étapes en place pour m'assurer qu'un module personnalisé est activé sur dev / staging.
git update-index --assume-unchanged sites/default/settings.php
pour empêcher settings.php d'être poussé dans différents environnements. Certaines personnes préfèrent une logique conditionnelle qui vérifie les paramètres d'environnement et inclut différents fichiers de conf basés sur l'environnement (à peu près tous les autres frameworks Web existants, dans n'importe quelle langue). La seule limite ici est l'imagination, c'est des trucs basiques PHP / git, n'a pas besoin d'être ajouté aux réponsessites/default/settings.php
, faites-le à la placegit update-index --skip-worktree sites/default/settings.php
. Avec--assume-unchanged
, vous perdez les modifications que vous avez apportées à settings.php si vous effectuez unegit reset --hard
. Voir stackoverflow.com/questions/13630849/…Réponses:
Comme autre option, plus rapide, vous pouvez ajouter les lignes suivantes au fichier settings.php de votre site (si vous avez installé le module Devel, ce que vous devriez certainement faire s'il s'agit d'un site de développement).
Cela remplacera le système de messagerie par défaut par le système de messagerie de développement de Devel, qui écrit les e-mails dans un journal de fichiers plutôt que de les envoyer à un destinataire. Par défaut, les fichiers sont stockés dans
temporary://devel-mails
, mais vous pouvez modifier cela en définissant une autre variable, par exemple.la source
Juste une note pour ajouter un autre module à la liste "Il y a un module pour ça":
Je suis d'accord que cette fonctionnalité peut facilement être implémentée avec quelques lignes de code, mais en utilisant ce module, vous pouvez continuer à recevoir des e-mails à une adresse prédéfinie, avec des détails sur le destinataire d'origine, belle fonctionnalité à mon humble avis.
la source
Ou vous pouvez utiliser hook_mail_alter pour rediriger ou empêcher les e-mails Drupal:
la source
git commit .
ou quelque chose de similaire.Drupal 8
Pour Drupal 8, vous pouvez activer le gestionnaire de messagerie du module Devel via le système de configuration.
Avec
drush
ce serait:la source
settings.local.php
:$config['system.mail']['interface']['default'] = 'devel_mail_log';
$config['devel.settings']['debug_mail_directory'] = 'temporary://my-directory';
.J'utilise habituellement le module Reroute Email pour ce cas. Il peut rediriger tous les e-mails du développeur vers certains e-mails. L'e-mail envoyé spécifie également où cet e-mail doit être envoyé.
la source
Cela fonctionnera sans développement et est sûr dans les trois environnements.
Ajoutez ceci dans settings.php. Copiez-le et changez l'environnement en
test
pour Test.Puis en mymodule:
Le crédit pour l'idée de modification du courrier va à http://www.jaypan.com/tutorial/preventing-emails-being-sent-drupal-7-development-environment .
la source
Je pense que le module Mail Redirect est parfait pour vous :) Une autre façon sale est d'installer le module SMTP et de définir un mauvais smtp;)
la source
https://api.drupal.org/api/drupal/modules!system!system.api.php/function/hook_mail_alter/7
la source
Vous pouvez donc mettre cela dans votre settings.php ou settings.local.php si vous en avez des spécifiques pour le développement, la mise en scène et la production.
la source
En supposant que vous utilisez le module Mailsystem , allez simplement sur
admin/config/system/mailsystem
et sélectionnezDevelMailLog
.la source
Configurez votre SMTP pour
localhost
et installer MailCatcher ( GitHub ) qui attire tout message qui lui est envoyé à l' affichage dans une interface Web.Installation
gem install mailcatcher
mailcatcher
Configurez votre
sendmail_path
en PHP pour:ou en configuration Apache :
Aller à
http://localhost:1080/
smtp://localhost:1025
Dans Drush, vous pouvez faire comme:
la source
si vous ne voulez pas toucher aux configurations Drupal, configurez MailHog sur votre serveur pour capter tous les e-mails sortant de votre application.
la source
Activez le module de prise en charge de l'authentification SMTP et vous pouvez directement éteindre votre serveur de messagerie SMTP à l'adresse
admin/config/system/smtp
.la source