Testar os emails no Drupal com o Lando, MailHog e Swiftmailer

MailHog Drupal email

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