Probar los correos electrónicos en un entorno de desarrollo local puede ser un reto. Es un verdadero dolor de cabeza saber si los correos electrónicos salientes de tu sitio web o aplicación web están realmente llegando a la bandeja de entrada de los destinatarios. ¡Prueba MailHog!

MailHog es una herramienta de prueba de correo electrónico que hace que sea superfácil de instalar y configurar un servidor de correo electrónico local. MailHog configura un servidor SMTP falso. Puedes configurar tus aplicaciones web preferidas para que utilicen el servidor SMTP de MailHog para enviar y recibir correos electrónicos.

Por ejemplo, puedes configurar un sitio local de WordPress para utilizar MailHog para las entregas de correo electrónico. Eso es exactamente lo que hace DevKinsta para alimentar su servidor SMTP incorporado para probar los correos electrónicos localmente.

En este artículo, aprenderás los entresijos de MailHog, incluyendo su instalación, configuración, cómo probar los correos electrónicos localmente y mucho más.

¿Preparado para sumergirte en el tema? Vamos a sumergirnos.

¿Quieres simplificar las pruebas de correo electrónico locales? Consigue MailHog 📧 Aprende a desplegarlo fácilmente en varias plataformas/configuraciones aquí mismo 👇Click to Tweet

¿Qué es MailHog?

Interfaz web de MailHog
Interfaz web de MailHog

MailHog es una herramienta de pruebas de correo electrónico de código abierto dirigida principalmente a los desarrolladores. Te permite probar las capacidades de envío y recepción de correos electrónicos de tu aplicación web de forma más eficiente.

Construido con el lenguaje de programación Go, MailHog puede ejecutarse en múltiples sistemas operativos, incluyendo Windows, Linux, FreeBSD y macOS. MailHog es mantenido por Ian Kent y fue lanzado bajo la licencia MIT, por lo que puedes desplegarlo libremente para usos personales y comerciales.

En primer lugar, ¿por qué necesitas MailHog?

Por Qué Necesitas MailHog

MailHog resuelve muchos de los principales problemas de los tests de correo electrónico.

Digamos que estás desarrollando un sitio web de WordPress en un entorno de desarrollo local. Si quieres probar un formulario de contacto o cualquier otro correo electrónico saliente desde él, puede ser una tarea desesperante.

Normalmente, el servidor SMTP por defecto de la aplicación web se encarga de esta tarea. En un entorno de desarrollo local, casi nunca funciona debido a múltiples razones.

Puedes 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)
Cómo funciona un servidor SMTP (Fuente: Wikimedia Commons)

En primer lugar, hay que configurar el sistema operativo, el servidor web y la aplicación web para habilitar los correos electrónicos en un entorno local. A continuación, tendrás que asegurarte de que los correos electrónicos llegan correctamente a la bandeja de entrada de tu destinatario, lo que puede acabar haciéndote perder tiempo (y espacio en la bandeja de entrada).

Y luego está la cuestión de utilizar una dirección de correo electrónico real para las pruebas. Puede perjudicar la credibilidad de tu correo electrónico privado.

MailHog resuelve todos los problemas anteriores. Configura un servidor SMTP falso que puedes configurar en tu aplicación web para enviar y recibir correos electrónicos. Incluso almacena los correos electrónicos enviados y recibidos en una ingeniosa interfaz web, para que puedas revisarlos como lo harías con una bandeja de entrada de correo electrónico real.

Por último, MailHog también te permite recuperar esos correos electrónicos con una API para realizar pruebas automatizadas. Es una característica poderosa, y el uso de la API depende de ti.

Características de MailHog

MailHog viene cargado con muchas características desde el principio. Estas son algunas de sus principales características:

Jim es el "Mono del Caos" de MailHog
Jim es el «Mono del Caos» de MailHog

Aparte de las características anteriores, MailHog dispone actualmente de dos librerías cliente para entornos PHP y NodeJS para interactuar con la API de MailHog de forma sencilla.

Implementación de MailHog en Varias Plataformas

Como hemos mencionado anteriormente, no es necesario instalar MailHog. Sin embargo, todavía tienes que descargarlo y configurarlo en tu entorno de desarrollo.

Empecemos por descargar MailHog. Luego te mostraremos cómo configurarlo en varias plataformas. Existen muchas maneras de hacerlo.

MailHog en Windows

En primer lugar, dirígete a la página de versiones de MailHog en GitHub para descargar su última versión estable para Windows. Después de descargar MailHog, puedes ejecutarlo tal cual sin ninguna dependencia externa.

Página de publicaciones de MailHog en GitHub
Página de versiones de MailHog en GitHub

Nota: En el momento de escribir este artículo, MailHog 1.0.1 es la última versión. Puedes descargarla precompilada para las plataformas Windows, Linux y Darwin (macOS). Si utilizas una plataforma de nicho, también puedes descargar su código fuente y compilarlo para tu caso de uso específico.

Como MailHog para Windows es un simple programa autoejecutable, basta con ejecutar el archivo .exe descargado. Si se te presenta alguna alerta de seguridad, asegúrate de permitir que MailHog se ejecute en tu entorno localhost sin restricciones de firewall.

Este es el aspecto de MailHog en Windows 10.

MailHog funcionando en Windows 10
MailHog funcionando en Windows 10

Puedes ver que el servidor SMTP está en el puerto 1025y el servidor HTTP está en el puerto 8025.

Todavía no es nada del otro mundo, pero es una confirmación de que MailHog se está ejecutando en tu sistema.

Ahora, puedes visitar localhost:8025 o 127.0.0.1:8025en tu navegador web para ver la interfaz web de MailHog.

MailHog Web UI en Windows
MailHog Web UI en Windows

No puedes encontrar ningún correo electrónico listado 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 usas Linux (Ubuntu/Debian), aquí tienes cómo puedes desplegar 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 tu entorno de desarrollo (si no lo tienes ya). Puedes omitir esta línea si ya has instalado Go. El siguiente comando instala git en tu máquina (puedes saltarte esto también si ya está instalado).

El tercer comando utiliza la directiva de Go para obtener la última versión estable de MailHog desde su repositorio de GitHub.

A continuación, puedes ejecutar /path/to/MailHog a través de tu terminal para iniciar MailHog. La ruta exacta puede variar dependiendo de tu tipo de Linux. Como los archivos bin de Go en Ubuntu se almacenan en el directorio ~/go/bin/, puedes ejecutar el siguiente código para iniciar MailHog:

~/go/bin/MailHog

Eso es todo. MailHog se está ejecutando ahora en tu máquina Linux. Así es como se ve.

MailHog funcionando en Linux (Ubuntu)
MailHog funcionando en Linux (Ubuntu)

Si quieres iniciar MailHog automáticamente en cada inicio de sesión, puedes configurarlo para que se inicie como un daemom usando supervisord, upstart, etc. También puedes usar el script init o el rol Ansible proporcionado por geerlingguy para hacer lo mismo.

Al igual que en Windows, puedes ver que el servidor SMTP se inicia en el puerto 1025 y el servidor HTTP en el puerto 8025.

Visita localhost:8025 o 127.0.0.1:8025 en tu navegador web para ver la interfaz web de MailHog.

MailHog Web UI en Linux (Ubuntu)
MailHog Web UI en Linux (Ubuntu)

MailHog en macOS

Los usuarios de Apple pueden instalar MailHog utilizando Homebrew. Abre tu terminal y ejecuta el siguiente comando:

brew install mailhog

Eso instalará MailHog en tu macOS. A continuación, puedes iniciar MailHog con:

mailhog

Si deseas que MailHog se inicie automáticamente al iniciar la sesión y se ejecute como un servicio en segundo plano, puedes ejecutar el siguiente comando en su lugar:

brew services start mailhog

Eso es todo. MailHog está ahora instalado en tu macOS. Puedes ver su interfaz web visitando 127.0.0.1:8025 o localhost:8025 en tu navegador.

MailHog en Docker

Docker es una de las formas más fáciles de configurar MailHog en cualquier plataforma.

En primer lugar, asegúrate de que tienes Docker instalado en tu máquina. A continuación, puedes iniciar MailHog directamente desde Docker Hub ejecutando el siguiente comando:

docker run -d -p 1025:1025 -p 8025:8025 mailhog/mailhog

Vamos a desglosar el comando anterior y sus directivas:

Alternativamente, si quieres montar el Maildir de MailHog en tu sistema de archivos local (en lugar de dentro de un contenedor Docker), puedes ejecutar el siguiente comando:

docker run -d -e "MH_STORAGE=maildir" -v $PWD/maildir:/maildir -p 1025:1025 -p 8025:8025 mailhog/mailhog

Al igual que antes, puedes visitar localhost:8025 o 127.0.0.1:8025 en tu navegador para utilizar la interfaz web de MailHog.

MailHog en Docker Compose

Docker Compose es una extensión de Docker que facilita la ejecución de múltiples contenedores Docker con un solo comando. Para ello, se definen todos los contenedores que se quieren ejecutar en un archivo YAML.

Por defecto, Docker Compose requiere que nombres este archivo como docker-compose.yaml.

Para ejecutar MailHog con Docker Compose, este es el aspecto que debe tener tu archivo docker-compose.yaml:

version: "3"
services:
  mailhog:
    image: mailhog/mailhog:latest
    restart: always
    ports:
      - 1025:1025
      - 8025:8025

Dentro de la carpeta donde reside este archivo, ejecuta el siguiente comando para iniciar MailHog en segundo plano:

docker-compose up -d mailhog

Funciona exactamente igual que con Docker. Excepto que aquí, no tienes que mencionar muchas directivas, ya que las has definido.

Ahora puedes introducir localhost:8025 o 127.0.0.1:8025 en tu navegador para ver la interfaz 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 sustituto de sendmail creado específicamente para MailHog. Garantiza que los correos electrónicos de tu aplicación web se envíen y reciban utilizando el servidor SMTP localhost:1025, que MailHog está configurado para manejar por defecto.

Para empezar, necesitas descargar e instalar mhsendmail. Dependiendo de tu plataforma, puedes abordar esto de varias maneras.

Por ejemplo, si usas Ubuntu, puedes descargar mhsendmail desde tu repositorio en GitHub usando el siguiente comando:

wget https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64

A continuación, haz que este archivo sea ejecutable y muévelo a tu directorio de usuario. Para ello, utiliza el siguiente comando:

sudo chmod +x mhsendmail_linux_amd64
sudo mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail

Alternativamente, también puedes obtener mhsendmail en Golang o Homebrew ejecutando este comando:

go get github.com/mailhog/mhsendmail

Asegúrate de que Go está instalado antes de ejecutar el comando anterior. Si estás en Linux, consulta la sección MailHog en Linux más arriba. Para instalar Go con Homebrew, ejecuta el siguiente comando:

brew install go

Una vez descargado mhsendmail, puedes proceder a su instalación:

¿Quieres usar MailHog de inmediato? DevKinsta utiliza MailHog para alimentar tu bandeja de entrada de correo electrónico para las pruebas de correo electrónico local sin problemas. Utiliza DevKinsta para construir, probar y desplegar sitios de WordPress en minutos. Prueba DevKinsta ahora!

go get github.com/mailhog/mhsendmail

A continuación, debes configurar tu aplicación web para que utilice mhsendmail de MailHog como su servicio de enrutamiento de correo electrónico. La mayoría de los sistemas Linux lo tienen configurado para usar sendmail por defecto.

Puedes hacerlo editando tu archivo php.ini. En la mayoría de los servidores, puedes encontrar el archivo php.ini en el directorio raíz. También puedes ejecutar el siguiente comando para encontrarlo:

php -i | grep 'php.ini'

Para las máquinas Linux que ejecutan Ubuntu, es necesario establecer el valor de sendmail_path a:

sendmail_path = /usr/local/bin/mhsendmail

En lugar del valor anterior, también puedes utilizar el valor que se muestra a continuación para obtener el mismo resultado:

sendmail_path = /usr/sbin/sendmail -S mail:1025

Si uhas utilizado Go para instalar mhsendmail, o si estás usando cualquier otra variante de Linux, la ruta puede variar ligeramente dependiendo de tu plataforma/configuración. Asegúrate de enlazar con el directorio adecuado de mhsendmail.

Los usuarios de Mac necesitan editar su archivo de configuración de Postfix para configurar MailHog correctamente. Puedes utilizar la siguiente configuración de Postfix:

myhostname = localhost
relayhost = [127.0.0.1]:1025

En el caso de los sitios de WordPress, puedes utilizar el plugin gratuito MailHog for WordPress para dirigir los correos electrónicos de tu sitio a MailHog. Para utilizarlo, instala y activa el plugin en Tu panel de administración de WordPress. Una mejor alternativa es utilizar DevKinsta. Lo cubriremos en profundidad más adelante.

Lee la documentación de MailHog para obtener información sobre cómo configurarlo en varias otras plataformas/configuraciones.

Opciones Adicionales para la Configuración de MailHog

Puedes configurar MailHog utilizando sus diversas variables de entorno u opciones de línea de comandos.

Por ejemplo, puedes cambiar su nombre de host por defecto de mailhog.example a un nombre personalizado utilizando la variable de entorno MH_HOSTNAME o la opción de línea de comandos –hostname.

Para más información, puedes consultar la documentación sobre las opciones de configuración de MailHog.

Prueba del Correo Electrónico Localmente con MailHog

Por último, vamos a probar nuestra configuración de MailHog para ver si está bien configurada.

Puedes enviar un correo electrónico con el CLI de Mailhog utilizando las siguientes directivas mhsendmail:

mhsendmail [email protected] <
To: Test <[email protected]>
Subject: Hello, MailHog!

Hey there,
Missing you pig time.

Hogs & Kisses,
Salman
EOF

En el código anterior, la directiva<<EOF establece un delimitador personalizado para que puedas introducir los detalles del correo electrónico de prueba de forma interactiva dentro del terminal. Se ejecuta toda la entrada cuando se vuelve a escribir el delimitador. Aquí, envía un correo usando el comando mhsendmail.

Envío de un correo electrónico de prueba con 'mhsendmail'
Envío de un correo electrónico de prueba con ‘mhsendmail’

Puedes comprobar si el correo electrónico se ha entregado correctamente visitando la interfaz web de MailHog.

El correo electrónico de prueba ha sido entregado con éxito
El correo electrónico de prueba ha sido entregado con éxito

También puedes hacer clic en el correo electrónico de prueba para verificar su contenido.

Verificación del contenido del cuerpo del correo electrónico de prueba
Verificación del contenido del cuerpo del correo electrónico de prueba

¡Eso es todo! Ahora podemos confirmar que MailHog ha sido configurado con éxito.

Además del método anterior, existen otras formas de enviar un correo electrónico de prueba. Por ejemplo, en macOS, puedes enviar un correo electrónico de prueba ejecutando el siguiente comando en tu terminal:

date | mail -s "Hello, MailHog!" [email protected]

En Windows, puedes 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 puedes definir un script PHP con todos los datos del correo y utilizar la función mail() de PHP para enviar un correo de prueba. Para ello, defina tu script PHP como el siguiente y ejecútalo desde la terminal:

<?php
$to = "[email protected]";
$subject = "Hey, I’m Pi Hog Pi!";
$body = "Hello, MailHog!";
$headers = "From: [email protected]" . "\r\n";
mail($to,$subject,$body,$headers);
?>

Por último, puedes utilizar la API de MailHog para comprobar si un correo electrónico se ha entregado correctamente. Si trabajas exclusivamente en un entorno no-GUI (por ejemplo, terminal de Linux, PowerShell de Windows), la API de MailHog es muy útil para listar, recuperar y eliminar correos electrónicos.

DevKinsta y MailHog: Prueba del Correo Electrónico Localmente 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 contenerizar sitios individuales, tendrás una bandeja de entrada de MailHog separada para cada sitio local que estés desarrollando.

La "Bandeja de entrada de correo electrónico" de DevKinsta es impulsada por MailHog
La «Bandeja de entrada de correo electrónico» de DevKinsta es impulsada por MailHog

Al igual que la interfaz web de MailHog, puedes utilizar la bandeja de entrada de correo electrónico local de DevKinsta para ver y manipular los correos electrónicos (eliminar, marcar como leído, ver la fuente).

Ver y manipular correos electrónicos en DevKinsta
Ver y manipular correos electrónicos en DevKinsta

También puedes comprobar los registros de MailHog de DevKinsta ejecutando el siguiente comando 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.

Conoce a MailHog 📧 La herramienta de pruebas de correo electrónico que hará que tu experiencia de desarrollo local sea mucho más sencilla 😌Click to Tweet

Resumen

MailHog hace que las pruebas de correo electrónico sean muy fáciles. Es una solución estupenda y práctica para probar los correos electrónicos de tu 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 gran manera de empezar con el desarrollo local de WordPress. No solo incluye MailHog para probar los correos electrónicos localmente, sino que también viene incorporado con Adminer para una fácil gestión de la base de datos.

Con MailHog (y DevKinsta) a tu lado, descubrirás que probar los correos electrónicos localmente nunca fue tan fácil.

Si quieres compartir tu experiencia o los retos que supone probar los correos electrónicos localmente, escríbenos en la sección de comentarios más abajo.


Ahorra tiempo, costes y maximiza el rendimiento del sitio con:

  • Ayuda instantánea de expertos en alojamiento de WordPress, 24/7.
  • Integración de Cloudflare Enterprise.
  • Alcance de audiencia global con 29 centros de datos en todo el mundo.
  • Optimización con nuestra herramienta de monitoreo de rendimiento de aplicación integrada.

Todo esto y mucho más, en un plan sin contratos a largo plazo, migraciones asistidas y una garantía de devolución del dinero de 30 días. Conozca nuestros planes o habla con el departamento de ventas para encontrar el plan más adecuado para ti.