Testar os emails no Drupal com o Lando, MailHog e Swiftmailer
Se ainda não ouviste falar do MailHog, é uma ferramenta que permite aos developers testar localmente os e-mails. O Lando tem suporte nativo para o MailHog, apenas é necessário adicioná-lo como um serviço ao ficheiro de configuração .lando.yml. Para facilitar, basta copiar o exemplo que deixo abaixo, que também tem alguns extras interessantes, como ativar e desativar o Xdebug em tempo real. Há um segundo arquivo .lando.php.ini que .lando.yml faz referência com algumas configurações personalizadas, como alterar o xdebug.remote_port padrão para 9001 (preciso disso no meu Mac).
No lado do Drupal, obviamente é necessário ter o módulo Swift Mailer ativo. No arquivo settings.local.php do Drupal, deves adicionar as instruções que indico abaixo.
.lando.yml
name: drupal
recipe: drupal8
config:
webroot: web
xdebug: false
database: mysql:8.0
config:
php: .lando.php.ini
services:
phpmyadmin:
type: phpmyadmin
hosts:
- database
appserver:
overrides:
ports:
- "0.0.0.0::80"
environment:
PHP_SENDMAIL_PATH: '/usr/sbin/sendmail -S mailhog:1025'
mailhog:
type: mailhog
portforward: true
hogfrom:
- appserver
proxy:
mailhog:
- mail.lndo.site
tooling:
xdebug-on:
service: appserver
description: Enable xdebug for apache.
cmd: "docker-php-ext-enable xdebug && /etc/init.d/apache2 reload"
user: root
xdebug-off:
service: appserver
description: Disable xdebug for apache.
cmd: "rm /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini && /etc/init.d/apache2 reload"
user: root
.lando.php.ini
; Xdebug
xdebug.max_nesting_level = 256
xdebug.show_exception_trace = 0
xdebug.collect_params = 0
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
xdebug.remote_host = ${LANDO_HOST_IP}
xdebug.remote_port=9001
settings.local.php
// Swiftmailer MailHog settings override
$config['swiftmailer.transport']['transport'] = 'smtp';
$config['swiftmailer.transport']['smtp_host'] = 'mailhog';
$config['swiftmailer.transport']['smtp_port'] = '1025';
$config['swiftmailer.transport']['smtp_encryption'] = '0';
Por José Fernandes