gomail: Отправка email на Go
gomail — это мощная и простая в использовании библиотека для отправки электронных писем на языке Go (Golang). Она предоставляет удобный интерфейс для создания и отправки писем с поддержкой вложений, HTML-шаблонов, нескольких получателей и аутентификации через SMTP. Библиотека активно поддерживается сообществом и является одним из стандартных решений для работы с email в экосистеме Go.
Зачем нужна gomail?
Отправка email — частая задача в веб-приложениях: регистрация пользователей, сброс пароля, уведомления, рассылки. Стандартная библиотека Go (net/smtp) предоставляет базовые возможности, но требует много ручной работы: кодирование вложений, формирование MIME-заголовков, работа с HTML-шаблонами. gomail берет на себя все эти сложности, позволяя сосредоточиться на логике приложения.
Установка
Установка производится стандартной командой go get:
go get gopkg.in/gomail.v2Для использования в проекте импортируйте пакет:
import "gopkg.in/gomail.v2"Основные функции
- Простая отправка: минимальный код для отправки письма с текстом или HTML.
- Поддержка вложений: можно прикреплять файлы (изображения, PDF, документы).
- Множественные получатели: To, Cc, Bcc.
- HTML и текст: поддержка multipart/alternative писем.
- Аутентификация: поддержка LOGIN, PLAIN, CRAM-MD5.
- Кастомные заголовки: возможность добавлять свои заголовки (Reply-To, Message-ID и т.д.).
- Группы рассылки: удобно для массовых отправок.
Пример кода на Go (Golang)
Ниже приведен полный пример отправки письма с HTML-содержимым и вложением через SMTP-сервер 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", "Привет из Go!")
m.SetBody("text/html", "<h1>Здравствуйте!</h1><p>Это тестовое письмо.</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("Письмо отправлено успешно")
}Когда использовать gomail?
- Когда требуется надежная отправка писем с вложениями и HTML-версткой.
- При создании серверных приложений на Go, где нужна интеграция с email-уведомлениями.
- Для массовых рассылок (с использованием пула соединений).
- Если вы устали от ручного кодирования MIME и хотите чистый, читаемый код.
Библиотека gomail — отличный выбор для любого Go-проекта, где требуется отправка email. Она проста, документирована и покрыта тестами.