Saltar para a documentação
Go

Instalar

Um módulo, Go 1.24 e posteriores, e nada fora da biblioteca padrão.

Instalar

A versão atual é a 0.0.1. Tem um método para cada método do SDK de TypeScript, e a verificação de paridade do módulo faz falhar a compilação quando falta algum ou quando envia um pedido diferente.

go get github.com/bfzli/openemail-go
main.go
package 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() lê a chave de OPENEMAIL_API_KEY, por isso o código não guarda nenhuma credencial. Passe openemail.WithAPIKey quando a sua configuração estiver noutro sítio. New nunca falha: uma chave em falta ou mal formada é comunicada por client.Err() e pela primeira chamada.

O corpo de um pedido é um openemail.Body, um map[string]any cujas chaves mantêm os nomes da API, por isso scheduledAt escreve-se aqui tal como na referência da API. Uma resposta é um openemail.Object, o JSON descodificado com leitores como ID, String, Int, Bool, Time e Object.

O facto de Send ter terminado não significa que a mensagem tenha partido. Um envio agendado ou cancelável volta como queued ou scheduled e resolve-se mais tarde. Leia status, e não o facto de a chamada ter terminado.

Onde corre

Go 1.24 e posteriores, em todas as plataformas para as quais o Go compila. Os pedidos passam por net/http, por isso as ligações são reutilizadas e HTTPS_PROXY é respeitado. Um cliente pode ser usado por várias goroutines ao mesmo tempo: crie um quando o programa arranca e partilhe-o.

O cliente transporta uma chave de API do espaço de trabalho que pode enviar correio e ler a caixa de correio, por isso o seu lugar é num servidor, numa tarefa ou numa ferramenta que corra na sua própria máquina. Guarde a chave numa variável de ambiente ou nos segredos do seu framework, nunca no código.