Eu tenho um fluxo de trabalho de servidor de desenvolvimento, teste e ao vivo configurado no Pantheon. Meu site tem muitas regras que fazem com que os membros sejam enviados por email por vários motivos. Às vezes, preciso trabalhar neles nos meus sites de teste / desenvolvimento, mas percebi que, como eles têm dados ativos, às vezes os usuários recebem e-mails adicionais ou duplicados quando estou trabalhando em algo.
Existe alguma maneira fácil de desativar todos os recursos de email (de preferência automaticamente para impedir que eu esqueça) em um servidor de desenvolvimento / armazenamento temporário? Idealmente, eu gostaria de desativar o email por meio de um módulo personalizado, já que já tenho etapas para garantir que um módulo personalizado esteja ativado no desenvolvimento / teste.
git update-index --assume-unchanged sites/default/settings.php
para impedir que o settings.php seja empurrado para ambientes diferentes. Algumas pessoas preferem uma lógica condicional que checa as configurações do ambiente e inclui diferentes arquivos conf com base no ambiente (praticamente todos os outros frameworks existentes, em qualquer idioma). O único limite aqui é a imaginação, é PHP básico / stuff git, não precisam ser adicionados às respostassites/default/settings.php
, façagit update-index --skip-worktree sites/default/settings.php
. Com--assume-unchanged
, você perde as alterações feitas no settings.php se fizer umgit reset --hard
. Veja stackoverflow.com/questions/13630849/…Respostas:
Como outra opção, mais rápida, você pode adicionar as seguintes linhas ao arquivo settings.php do seu site (se você tiver o módulo Devel instalado, o que você certamente deve fazer se for um site de desenvolvimento).
Isso substituirá o sistema de correio padrão pelo sistema de correio de desenvolvimento do Devel, que grava emails em um log de arquivos em vez de enviá-los para um destinatário. Por padrão, os arquivos são armazenados
temporary://devel-mails
, mas você pode alterar isso configurando outra variável, por exemplo.fonte
Apenas uma observação para adicionar outro módulo à lista "Existe um módulo para isso":
Concordo que essa funcionalidade pode ser facilmente implementada com algumas linhas de código, mas, usando este módulo, você pode continuar recebendo e-mails para um endereço predefinido, com detalhes sobre o destinatário original, ótima funcionalidade.
fonte
Ou você pode usar hook_mail_alter para redirecionar ou impedir emails drupal:
fonte
git commit .
ou algo semelhante.Drupal 8
No Drupal 8, você pode ativar o manipulador de correio do módulo Devel através do sistema de configuração.
Com
drush
isso seria:fonte
settings.local.php
:$config['system.mail']['interface']['default'] = 'devel_mail_log';
$config['devel.settings']['debug_mail_directory'] = 'temporary://my-directory';
.Normalmente, uso o módulo Reroute Email para este caso. Ele pode redirecionar todos os emails de dev para determinados emails. O email enviado também especifica para onde esse email deve ser enviado.
fonte
Isso funcionará sem desenvolvimento e é seguro nos três ambientes.
Adicione isso em settings.php. Copie-o e altere o ambiente
test
para Teste.Então no mymodule:
O crédito pela ideia de alteração de correio vai para http://www.jaypan.com/tutorial/preventing-emails-being-sent-drupal-7-development-environment .
fonte
Eu acho que o módulo Redirecionamento de email é perfeito para você :) Outra maneira suja é instalar o módulo SMTP e definir um smtp errado;)
fonte
https://api.drupal.org/api/drupal/modules!system!system.api.php/function/hook_mail_alter/7
fonte
Então você pode colocar isso no seu settings.php ou settings.local.php se tiver algum específico para desenvolvimento, preparação e produção.
fonte
Supondo que você esteja usando o módulo Mailsystem , basta ir
admin/config/system/mailsystem
e selecionarDevelMailLog
.fonte
Set-up seu SMTP para
localhost
e instalar MailCatcher ( GitHub ), que pega qualquer mensagem enviada a ele para exibição em uma interface web.Instalação
gem install mailcatcher
mailcatcher
Configure o seu
sendmail_path
no PHP para:ou na configuração do Apache :
Vamos para
http://localhost:1080/
smtp://localhost:1025
No Drush você pode fazer como:
fonte
se você não quiser tocar nas configurações do Drupal, configure o MailHog no seu servidor para capturar todos os e-mails que saem do seu aplicativo.
fonte
Ative o módulo Suporte à autenticação SMTP e você pode desligar diretamente o servidor de email SMTP em
admin/config/system/smtp
.fonte