gomail: Envío de correos electrónicos en Go
gomail es una biblioteca potente y fácil de usar para enviar correos electrónicos en el lenguaje Go (Golang). Proporciona una interfaz conveniente para crear y enviar correos con soporte para archivos adjuntos, plantillas HTML, múltiples destinatarios y autenticación a través de SMTP. La biblioteca es mantenida activamente por la comunidad y es una de las soluciones estándar para trabajar con correo electrónico en el ecosistema Go.
¿Para qué sirve gomail?
El envío de correos electrónicos es una tarea común en aplicaciones web: registro de usuarios, restablecimiento de contraseñas, notificaciones, boletines. La biblioteca estándar de Go (net/smtp) proporciona funcionalidades básicas, pero requiere mucho trabajo manual: codificación de archivos adjuntos, creación de encabezados MIME, trabajo con plantillas HTML. gomail se encarga de todas estas complejidades, permitiéndole concentrarse en la lógica de la aplicación.
Instalación
La instalación se realiza con el comando estándar go get:
go get gopkg.in/gomail.v2Para usarlo en un proyecto, importe el paquete:
import "gopkg.in/gomail.v2"Funciones principales
- Envío simple: código mínimo para enviar un correo con texto o HTML.
- Soporte para archivos adjuntos: se pueden adjuntar archivos (imágenes, PDF, documentos).
- Múltiples destinatarios: Para, CC, CCO.
- HTML y texto: soporte para correos multipart/alternative.
- Autenticación: soporte para LOGIN, PLAIN, CRAM-MD5.
- Encabezados personalizados: posibilidad de agregar sus propios encabezados (Reply-To, Message-ID, etc.).
- Grupos de envío: conveniente para envíos masivos.
Ejemplo de código en Go (Golang)
A continuación se muestra un ejemplo completo de envío de un correo con contenido HTML y un archivo adjunto a través del servidor SMTP de Gmail:
package main
import ( "gopkg.in/gomail.v2" "log")
func main() { m := gomail.NewMessage() m.SetHeader("From", "youremail@gmail.com") m.SetHeader("To", "recipient@example.com") m.SetHeader("Subject", "¡Hola desde Go!") m.SetBody("text/html", "<h1>¡Hola!</h1><p>Este es un correo de prueba.</p>") m.Attach("/path/to/file.pdf")
d := gomail.NewDialer("smtp.gmail.com", 587, "youremail@gmail.com", "yourpassword")
if err := d.DialAndSend(m); err != nil { log.Fatal(err) } log.Println("Correo enviado exitosamente")}¿Cuándo usar gomail?
- Cuando se requiere un envío confiable de correos con archivos adjuntos y maquetación HTML.
- Al crear aplicaciones de servidor en Go donde se necesita integración con notificaciones por correo electrónico.
- Para envíos masivos (usando un pool de conexiones).
- Si está cansado de la codificación manual de MIME y desea un código limpio y legible.
La biblioteca gomail es una excelente opción para cualquier proyecto Go que requiera el envío de correos electrónicos. Es simple, está documentada y cubierta por pruebas.
También en la biblioteca
Jsoup en Java: guía completa con ejemplos prácticos
Chalk para JavaScript (Node.js): guía completa con ejemplos
Hibernate ORM: Potente herramienta para trabajar con bases de datos en Java
Programación reactiva en Rust: bibliotecas, frameworks y ejemplos prácticos
OkHttp para Kotlin: guía completa con ejemplos