Установка
Один модуль, Go 1.24 и новее, и ничего, кроме стандартной библиотеки.
Установка
Текущий выпуск: 0.0.1. В нём есть метод для каждого метода TypeScript SDK, и проверка паритета модуля ломает сборку, когда какого-то не хватает или он отправляет другой запрос.
go get github.com/bfzli/openemail-gopackage main import ( "context" "fmt" "log" "github.com/bfzli/openemail-go") func main() { client := openemail.New() email, err := client.Emails.Send(context.Background(), openemail.Body{ "from": "Acme Billing <[email protected]>", "to": "[email protected]", "subject": "Your September invoice", "html": "<p>Invoice attached.</p>", }) if err != nil { log.Fatal(err) } fmt.Println(email.ID(), email.String("status"))}openemail.New() читает ключ из OPENEMAIL_API_KEY, поэтому в коде нет учётных данных. Передайте openemail.WithAPIKey, если ваша конфигурация хранится в другом месте. New никогда не завершается ошибкой: об отсутствующем или неверно составленном ключе сообщают client.Err() и первый вызов.
Тело запроса представляет собой openemail.Body, то есть map[string]any, ключи которого сохраняют имена API, поэтому scheduledAt пишется здесь так же, как в справочнике API. Ответ представляет собой openemail.Object, декодированный JSON с методами чтения, такими как ID, String, Int, Bool, Time и Object.
То, что Send вернул результат, не значит, что сообщение ушло. Запланированная или отменяемая отправка возвращается со статусом queued или scheduled и завершается позже. Читайте status, а не сам факт возврата из вызова.
Где он работает
Go 1.24 и новее, на любой платформе, для которой собирается Go. Запросы идут через net/http, поэтому соединения используются повторно, а HTTPS_PROXY учитывается. Клиент можно использовать из нескольких горутин одновременно: создайте один при запуске программы и делитесь им.
Клиент несёт API-ключ рабочего пространства, который может отправлять почту и читать почтовый ящик, поэтому его место на сервере, в задании или в инструменте, который работает на вашей собственной машине. Храните ключ в переменной окружения или в секретах вашего фреймворка, но никогда в коде.