Cómo usar MailHog para probar correos electrónicos localmente (Guía paso a paso)
Probar correos electrónicos en un entorno de desarrollo local puede ser un desafío. Es una verdadera molestia saber si los correos electrónicos salientes de su sitio web o aplicación web están llegando realmente a la bandeja de entrada del destinatario. ¡Entra, MailHog!
MailHog es una herramienta de prueba de correo electrónico que hace que sea muy fácil de instalar y configurar un servidor de correo electrónico local. MailHog configura un servidor SMTP falso. Puede configurar sus aplicaciones web preferidas para utilizar el servidor SMTP de MailHog para enviar y recibir correos electrónicos.
Por ejemplo, puede configurar un sitio de WordPress local para utilizar MailHog para las entregas de correo electrónico. Eso es exactamente lo que DevKinsta hace para alimentar su servidor SMTP incorporado para probar correos electrónicos localmente.
En este artículo, aprenderá los entresijos de MailHog, incluida su instalación, configuración, cómo probar los correos electrónicos localmente y mucho más.
¿Listo para sumergirte? ¡Vamos!
¿Qué es MailHog?
Interfaz de usuario web de MailHog
MailHog es una herramienta de prueba de correo electrónico de código abierto dirigida principalmente a desarrolladores. Le permite probar las capacidades de envío y recepción de correo electrónico de su aplicación web de manera más eficiente.
Construido con el lenguaje de programación Go, MailHog se puede ejecutar en múltiples sistemas operativos, incluidos Windows, Linux, FreeBSD y macOS. MailHog es mantenido por Ian Kent y publicado bajo la licencia MIT, por lo que puede implementarlo libremente para usos personales y comerciales.
Pero, ¿por qué necesitas MailHog en primer lugar?
Por qué necesita MailHog
MailHog resuelve muchos de los principales problemas de las pruebas de correo electrónico.
Supongamos que está desarrollando un sitio web de WordPress en un entorno de desarrollo local. Si desea probar un formulario de contacto o cualquier otro correo electrónico saliente, puede ser una tarea terrible.
Normalmente, el servidor SMTP predeterminado de la aplicación web se encarga de esta tarea. En un entorno de desarrollo local, casi siempre nunca funciona debido a múltiples razones.
Puede leer nuestra extensa guía sobre servidores SMTP gratuitos para saber más sobre cómo funciona un servidor SMTP.
Cómo funciona un servidor SMTP (Fuente: Wikimedia Commons)
Primero, debe configurar su sistema operativo, servidor web y aplicación web para habilitar los correos electrónicos en un entorno local. Luego, deberá asegurarse de que los correos electrónicos lleguen correctamente a la bandeja de entrada de su destinatario, lo que puede terminar perdiendo su tiempo (y espacio en la bandeja de entrada).
Y luego está el problema de usar una dirección de correo electrónico real para realizar pruebas. Puede dañar la credibilidad de su correo electrónico privado.
MailHog resuelve todos los problemas anteriores. Configura un servidor SMTP falso que puede configurar su aplicación web para enviar y recibir correos electrónicos. Incluso almacena los correos electrónicos enviados y recibidos en una interfaz de usuario web ingeniosa, por lo que puede revisarlos como lo haría con una bandeja de entrada de correo electrónico real.
Por último, MaiilHog también le permite recuperar esos correos electrónicos con una API para realizar pruebas automatizadas. Es una característica poderosa, y la forma en que use la API depende de usted.
Funciones de MailHog
MailHog viene equipado con muchas funciones listas para usar. Éstos son algunos de sus aspectos más destacados:
- Ligero y portátil: No necesitas instalar MailHog para usarlo. Es una de las principales ventajas de MailHog. Eso hace que sea muy portátil para ejecutarlo en casi cualquier sistema operativo o servidor web.
- Soporte SMTP extendido: MailHog no solo admite la configuración de un servidor SMTP falso, sino que también puede usarlo para configurar un servidor ESMTP (SMTP extendido). También incluye soporte para SMTP AUTH y PIPELINING.
- Soporte API: Puede utilizar la API HTTP integrada de MailHog (o API JSON) para recuperar, enumerar y eliminar correos electrónicos.
- Prueba de falla: Puede invitar a Jim, el Chaos Monkey de MailHog (sí, en realidad se llama así), a la fiesta para probar la capacidad de entrega de correo electrónico de su aplicación web. Lo hace creando aleatoriamente problemas comunes de entrega de correo electrónico, como conexiones / autenticaciones rechazadas y conexiones de velocidad limitada.
- Actualizaciones en tiempo real: MailHog utiliza la interfaz web EventSource para proporcionar actualizaciones instantáneas.
- Captura y almacenamiento de correos electrónicos: Los correos electrónicos capturados se pueden almacenar en el almacenamiento de mensajes en memoria y conservarse en una base de datos MongoDB y un sistema de almacenamiento basado en archivos.
- Descargar archivos adjuntos: MailHog admite la descarga de partes MIME individuales.
- Interfaz de usuario web: Puede utilizar la interfaz de usuario web de MailHog para ver los correos electrónicos como texto sin formato, HTML o fuente. También admite encabezados codificados y MIME de varias partes.
- Autenticación: MailHog admite la autenticación básica HTTP tanto para su interfaz de usuario web como para su API.
- Liberar correos electrónicos capturados: Puede configurar MailHog para que libere los correos electrónicos capturados a servidores SMTP reales para su entrega.
Jim es el «Chaos Monkey» de MailHog
Además de las características anteriores, MailHog tiene actualmente dos bibliotecas cliente para entornos PHP y NodeJS para interactuar fácilmente con la API de MailHog.
Implementación de MailHog en varias plataformas
Como se mencionó anteriormente, no es necesario instalar MailHog. Sin embargo, aún debe descargarlo y configurarlo en su entorno de desarrollo.
Comencemos con la descarga de MailHog. Luego, le mostraremos cómo configurarlo en varias plataformas. Hay muchas formas de hacerlo.
MailHog en Windows
Primero, dirígete a la página de lanzamientos de MailHog en GitHub para descargar su última versión estable para Windows. Después de descargar MailHog, puede ejecutarlo como está sin dependencias externas.
Página de lanzamientos de MailHog GitHub
Nota: Al momento de escribir este artículo, MailHog 1.0.1 es la última versión de lanzamiento. Puede descargarlo precompilado para plataformas Windows, Linux y Darwin (macOS). Si está utilizando una plataforma de nicho, también puede descargar su código fuente y compilarlo para su caso de uso específico.
Como MailHog para Windows es un programa autoejecutable simple, puede ejecutar el descargado .exe expediente. Si se le presenta alguna alerta de seguridad, asegúrese de permitir que MailHog se ejecute en su entorno de host local sin restricciones de firewall.
Así es como se ve MailHog en Windows 10.
MailHog ejecutándose en Windows 10
Puede ver que el servidor SMTP está en el puerto 1025 y el servidor HTTP está en el puerto 8025.
Nada demasiado sofisticado todavía, pero es una confirmación de que MailHog se está ejecutando en su sistema.
Ahora puedes visitar localhost:8025 o 127.0.0.1:8025 en su navegador web para ver la interfaz de usuario web de MailHog.
Interfaz de usuario web de MailHog en Windows
No puede encontrar ningún correo electrónico en la lista aquí todavía, ya que no hemos configurado ninguna de nuestras aplicaciones web para usar MailHog. Cubriremos eso más adelante en este artículo.
MailHog en Linux
Si está utilizando Linux (Ubuntu / Debian), así es como puede implementar MailHog:
sudo apt-get -y install golang-go
sudo apt-get install git
go get github.com/mailhog/MailHog
El primer comando instala el lenguaje de programación Golang en su entorno de desarrollo (si aún no lo tiene). Puede omitir esta línea si ya instaló Go. El siguiente comando se instala git en su máquina (también puede omitir esto si ya está instalado).
El tercer comando usa la directiva de Go para obtener la última versión estable de MailHog de su repositorio de GitHub.
A continuación, puede ejecutar /path/to/MailHog a través de su terminal para iniciar MailHog. La ruta exacta puede variar según su versión de Linux. Los archivos bin de As Go en Ubuntu se almacenan bajo el ~/go/bin/ directorio, puede ejecutar el siguiente código para iniciar MailHog:
~/go/bin/MailHog
Eso es practicamente todo. MailHog ahora se está ejecutando en su máquina Linux. Así es como se ve.
MailHog ejecutándose en Linux (Ubuntu)
Si desea iniciar MailHog automáticamente en cada inicio de sesión, puede configurarlo para que se inicie como un servidor demonio usando supervisord, upstart, etc. También puede usar el script de inicio o el rol Ansible proporcionado por geerlingguy para hacer lo mismo.
Al igual que con Windows, puede ver que el servidor SMTP se inicia en el puerto 1025 y el servidor HTTP comienza en el puerto 8025.
Visita localhost:8025 o 127.0.0.1:8025 en su navegador web para ver la interfaz de usuario web de MailHog.
Interfaz de usuario web de MailHog en Linux (Ubuntu)
MailHog en macOS
Los usuarios de Apple pueden instalar MailHog usando Homebrew. Abre tu terminal y ejecuta el siguiente comando:
brew install mailhog
Eso instalará MailHog en tu macOS. A continuación, puede iniciar MailHog con:
mailhog
Si desea que MailHog se inicie automáticamente al iniciar sesión y se ejecute como un servicio en segundo plano, puede ejecutar el siguiente comando en su lugar:
brew services start mailhog
Esa es prácticamente eso. MailHog ahora está instalado en su macOS. Puede ver su interfaz de usuario web visitando 127.0.0.1:8025 o localhost:8025 en su navegador.
MailHog en Docker
Docker es una de las formas más sencillas de configurar MailHog en cualquier plataforma.
Primero, asegúrese de tener Docker instalado en su máquina. A continuación, puede iniciar MailHog directamente desde Docker Hub ejecutando el siguiente comando:
docker run -d -p 1025:1025 -p 8025:8025 mailhog/mailhog
Analicemos el comando anterior y sus directivas:
docker runinicia un contenedor docker.
-dLa directiva ejecuta el contenedor de la ventana acoplable en segundo plano.
-p 1025:1025y-p 8025:8025Las directivas exponen los puertos SMTP predeterminados de MailHog a los locales.
mailhog/mailhogtoma la última compilación de MailHog de Docker Hub.
Alternativamente, si desea montar MailHog’s Maildir a su sistema de archivos local (en lugar de dentro de un contenedor Docker), puede ejecutar el siguiente comando:
docker run -d -e "MH_STORAGE=maildir" -v $PWD/maildir:/maildir -p 1025:1025 -p 8025:8025 mailhog/mailhog
Como antes, puedes visitar localhost:8025 o 127.0.0.1:8025 en su navegador para utilizar la interfaz de usuario web de MailHog.
MailHog en Docker Compose
Docker Compose es una extensión de Docker que facilita la ejecución de varios contenedores de Docker con un solo comando. Para ello, defina todos los contenedores que desea ejecutar en un archivo YAML.
De forma predeterminada, Docker Compose requiere que nombre este archivo como docker-compose.yaml.
Para ejecutar MailHog con Docker Compose, así es como docker-compose.yaml el archivo debe verse:
version: "3"
services:
mailhog:
image: mailhog/mailhog:latest
restart: always
ports:
- 1025:1025
- 8025:8025
Dentro de la carpeta donde reside este archivo, ejecute el siguiente comando para iniciar MailHog en segundo plano:
docker-compose up -d mailhog
Funciona exactamente igual que con Docker. Excepto aquí, no tiene que mencionar muchas directivas, ya que las ha definido.
Ahora puedes entrar localhost:8025 o 127.0.0.1:8025 en su navegador para ver la interfaz de usuario web de MailHog.
Además de los métodos anteriores, el repositorio GitHub de MailHog también incluye una guía para implementar MailHog en AWS Elastic Beanstalk.
Configuración de MailHog con mhsendmail
MailHog redirige los correos electrónicos de las aplicaciones web a su servidor SMTP utilizando mhsendmail, un sendmail reemplazo creado específicamente para MailHog. Asegura que los correos electrónicos de su aplicación web se envíen y reciban utilizando localhost:1025 Servidor SMTP, que MailHog está configurado para manejar de forma predeterminada.
Para comenzar, debe descargar e instalar mhsendmail. Dependiendo de su plataforma, puede abordar esto de varias maneras.
Por ejemplo, si usa Ubuntu, puede descargar mhsendmail desde su repositorio de GitHub mediante el siguiente comando:
wget https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64
A continuación, haga que este archivo sea ejecutable y muévalo a su directorio de usuario. Para hacer esto, use el siguiente comando:
sudo chmod +x mhsendmail_linux_amd64
sudo mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail
Alternativamente, también puede obtener mhsendmail en Golang o Homebrew ejecutando este comando:
go get github.com/mailhog/mhsendmail
Asegúrese de que Go esté instalado antes de ejecutar el comando anterior. Si está en Linux, consulte la MailHog en Linux sección anterior. Para instalar Go con Homebrew, ejecute el siguiente comando:
brew install go
Con mhsendmail descargado, ahora puede continuar con la instalación:
go get github.com/mailhog/mhsendmail
A continuación, debe configurar su aplicación web para usar MailHog’s mhsendmail como su servicio de enrutamiento de correo electrónico. La mayoría de los sistemas Linux lo tienen configurado para usar sendmail por defecto.
Puede hacer esto editando su php.ini expediente. En la mayoría de los servidores, puede encontrar el archivo php.ini en el directorio raíz. También puede ejecutar el siguiente comando para encontrar dónde está:
php -i | grep 'php.ini'
Para máquinas Linux que ejecutan Ubuntu, debe establecer el valor de sendmail_path a:
sendmail_path = /usr/local/bin/mhsendmail
En lugar del valor anterior, también puede utilizar el valor que se muestra a continuación para obtener el mismo resultado:
sendmail_path = /usr/sbin/sendmail -S mail:1025
Si usó Ir para instalar mhsendmail, o si está utilizando cualquier otra variante de Linux, la ruta puede variar ligeramente según su plataforma / configuración. Asegúrate de enlazar con el mhsendmail directorio.
Los usuarios de Mac deben editar sus Postfix config para configurar MailHog correctamente. Puede utilizar la siguiente configuración de Postfix:
myhostname = localhost
relayhost = [127.0.0.1]:1025
Para los sitios de WordPress, puede utilizar el complemento gratuito MailHog para WordPress para enrutar los correos electrónicos de su sitio a MailHog. Para usarlo, instale y active el complemento en su panel de administración de WordPress. Una mejor alternativa es usar DevKinsta. Lo cubriremos en profundidad más adelante.
Lea la documentación de MailHog para obtener información sobre cómo configurarlo en otras plataformas / configuraciones.
Opciones de configuración adicionales de MailHog
Puede configurar MailHog utilizando sus diversas variables de entorno u opciones de línea de comandos.
Por ejemplo, puede cambiar su nombre de host predeterminado de mailhog.example a un nombre personalizado usando el MH_HOSTNAME variable de entorno o la -hostname opción de línea de comando.
Para obtener más información, puede consultar la documentación de opciones de configuración de MailHog.
Prueba de correo electrónico local con MailHog
Finalmente, probemos nuestra configuración de MailHog para ver si está configurada correctamente.
Puede enviar un correo electrónico con la CLI de Mailhog utilizando lo siguiente mhsendmail directivas:
mhsendmail [email protected] <<EOF
From: Salman <[email protected]>
To: Test <[email protected]>
Subject: Hello, MailHog!
Hey there,
Missing you pig time.
Hogs & Kisses,
Salman
EOF
En el código anterior, el <<EOF La directiva establece un delimitador personalizado para que pueda ingresar los detalles del correo electrónico de prueba de forma interactiva dentro de la terminal. Ejecuta toda la entrada cuando vuelve a escribir el delimitador. Aquí, envía un correo usando el mhsendmail mando.
Enviar un correo electrónico de prueba usando ‘mhsendmail’
Puede verificar si el correo electrónico se entregó correctamente visitando la interfaz de usuario web de MailHog.
El correo electrónico de prueba se ha enviado correctamente.
También puede hacer clic en el correo electrónico de prueba para verificar el contenido del cuerpo.
Verificación del contenido del cuerpo del correo electrónico de prueba
¡Eso es un envoltorio! Ahora podemos concluir que MailHog se ha configurado correctamente.
Además del método anterior, hay otras formas de enviar un correo electrónico de prueba. Por ejemplo, en macOS, puede enviar un correo electrónico de prueba ejecutando el siguiente comando en su terminal:
date | mail -s "Hello, MailHog!" [email protected]
En Windows, puede enviar un correo electrónico con PowerShell ejecutando el siguiente código:
Send-MailMessage -To "[email protected]" -From "[email protected]" -Subject "Hello, MailHog!" -SmtpServer "localhost" -Port 1025
También puede definir un script PHP con todos los datos de correo y usar PHP mail() función para enviar un correo electrónico de prueba. Para hacer eso, defina su script PHP como se muestra a continuación y ejecútelo desde la terminal:
<?php
$to = "[email protected]";
$subject = "Hey, I’m Pi Hog Pi!";
$body = "Hello, MailHog!";
$headers = "From: [email protected]" . "rn";
mail($to,$subject,$body,$headers);
?>
Por último, puede usar la API de MailHog para probar si un correo electrónico se entregó correctamente. Si está trabajando exclusivamente en un entorno sin GUI (por ejemplo, terminal de Linux, Windows PowerShell), la API de MailHog es muy útil para enumerar, recuperar y eliminar correos electrónicos.
DevKinsta y MailHog: prueba de correo electrónico local sin complicaciones
Nuestra herramienta de desarrollo local de WordPress, DevKinsta, utiliza MailHog para potenciar sus funciones de prueba de correo electrónico. Como también Docker para contener sitios individuales, tendrá una bandeja de entrada de MailHog separada para cada sitio local que esté desarrollando.
La ‘Bandeja de entrada de correo electrónico’ de DevKinsta funciona con MailHog
Al igual que la interfaz de usuario web de MailHog, puede usar la bandeja de entrada de correo electrónico local de DevKinsta para ver y manipular correos electrónicos (eliminar, marcar como leído, ver la fuente).
Ver y manipular correos electrónicos en DevKinsta
También puede verificar los registros de MailHog de DevKinsta ejecutando el siguiente comando de Docker:
docker logs -f devkinsta_mailhog
Dirígete a la sección de la base de conocimientos de DevKinsta para obtener más información.
Resumen
MailHog facilita las pruebas de correo electrónico. Es una solución excelente y práctica para probar los correos electrónicos de su sitio web o aplicación web. Además, MailHog es fácil de configurar en casi todas las plataformas populares y tiene una interfaz de usuario web fácil de usar.
Al igual que MailHog, DevKinsta es una excelente manera de comenzar con el desarrollo local de WordPress. No solo incluye MailHog para probar correos electrónicos localmente, sino que también viene precargado con Adminer para una fácil administración de la base de datos.
Con MailHog (y DevKinsta) de su lado, encontrará que probar los correos electrónicos localmente nunca ha sido tan fácil.
Si desea compartir su experiencia o desafíos con la prueba de correos electrónicos localmente, envíenos una línea en la sección de comentarios a continuación.
Si disfrutó de este artículo, entonces le encantará la plataforma de alojamiento de WordPress de Kinsta. Acelere su sitio web y obtenga asistencia las 24 horas, los 7 días de la semana de nuestro veterano equipo de WordPress. Nuestra infraestructura impulsada por Google Cloud se centra en el escalado automático, el rendimiento y la seguridad. ¡Permítanos mostrarle la diferencia de Kinsta! Mira nuestros planes
