gomail: Envio de email em Go
gomail é uma biblioteca poderosa e fácil de usar para enviar e-mails na linguagem Go (Golang). Ela fornece uma interface conveniente para criar e enviar e-mails com suporte a anexos, templates HTML, múltiplos destinatários e autenticação via SMTP. A biblioteca é ativamente mantida pela comunidade e é uma das soluções padrão para trabalhar com e-mail no ecossistema Go.
Para que serve o gomail?
Enviar e-mail é uma tarefa comum em aplicações web: registro de usuários, redefinição de senha, notificações, newsletters. A biblioteca padrão do Go (net/smtp) fornece funcionalidades básicas, mas exige muito trabalho manual: codificação de anexos, formatação de cabeçalhos MIME, trabalho com templates HTML. O gomail assume todas essas complexidades, permitindo que você se concentre na lógica da aplicação.
Instalação
A instalação é feita com o comando padrão go get:
go get gopkg.in/gomail.v2Para usar no projeto, importe o pacote:
import "gopkg.in/gomail.v2"Principais funcionalidades
- Envio simples: código mínimo para enviar um e-mail com texto ou HTML.
- Suporte a anexos: é possível anexar arquivos (imagens, PDFs, documentos).
- Múltiplos destinatários: Para, Cc, Bcc.
- HTML e texto: suporte a e-mails multipart/alternative.
- Autenticação: suporte a LOGIN, PLAIN, CRAM-MD5.
- Cabeçalhos personalizados: possibilidade de adicionar seus próprios cabeçalhos (Reply-To, Message-ID, etc.).
- Grupos de envio: conveniente para envios em massa.
Exemplo de código em Go (Golang)
Abaixo está um exemplo completo de envio de e-mail com conteúdo HTML e anexo através do servidor SMTP do 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", "Olá do Go!") m.SetBody("text/html", "<h1>Olá!</h1><p>Este é um e-mail de teste.</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("E-mail enviado com sucesso")}Quando usar o gomail?
- Quando for necessário o envio confiável de e-mails com anexos e formatação HTML.
- Ao criar aplicações server-side em Go que precisam de integração com notificações por e-mail.
- Para envios em massa (usando pool de conexões).
- Se você está cansado de codificar MIME manualmente e quer um código limpo e legível.
A biblioteca gomail é uma excelente escolha para qualquer projeto Go que exija envio de e-mail. Ela é simples, documentada e coberta por testes.