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-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() 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.