Instalación
Un módulo, Go 1.24 y posteriores, y nada fuera de la biblioteca estándar.
Instalación
La versión actual es 0.0.1. Tiene un método para cada método del SDK de TypeScript, y la comprobación de paridad del módulo hace fallar la compilación cuando falta alguno o envía una petición distinta.
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() lee la clave de OPENEMAIL_API_KEY, así que el código no contiene ninguna credencial. Pasa openemail.WithAPIKey cuando tu configuración esté en otro sitio. New nunca falla: una clave ausente o mal formada la notifican client.Err() y la primera llamada.
El cuerpo de una petición es un openemail.Body, un map[string]any cuyas claves conservan los nombres de la API, así que scheduledAt se escribe aquí igual que en la referencia de la API. Una respuesta es un openemail.Object, el JSON decodificado con lectores como ID, String, Int, Bool, Time y Object.
Que Send devuelva un resultado no significa que el mensaje haya salido. Un envío programado o cancelable vuelve como queued o scheduled y se resuelve más tarde. Lee status, no el hecho de que la llamada haya devuelto algo.
Dónde funciona
Go 1.24 y posteriores, en todas las plataformas para las que Go compila. Las peticiones pasan por net/http, así que las conexiones se reutilizan y se respeta HTTPS_PROXY. Un cliente se puede usar desde varias goroutines a la vez: crea uno cuando arranque el programa y compártelo.
El cliente lleva una clave de API del espacio de trabajo que puede enviar correo y leer el buzón, así que su sitio es un servidor, un trabajo en segundo plano o una herramienta que se ejecute en tu propia máquina. Guarda la clave en una variable de entorno o en los secretos de tu framework, nunca en el código.