gomail

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

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. Она проста, документирована и покрыта тестами.

Рекомендаций