Cómo enviar correos con Go
Envía correos desde Go usando el paquete `net/http` de la biblioteca estándar.
No hay SDK oficial — llama a la API REST de Publiq con el cliente HTTP del lenguaje, desde el servidor, con la API key en el header Authorization.
package publiq
import (
"bytes"
"encoding/json"
"net/http"
"os"
)
func SendWelcome(to string) error {
body, _ := json.Marshal(map[string]any{
"from": "you@yourdomain.com",
"to": to,
"templateKey": "welcome-email",
"variables": map[string]string{"first_name": "Ana"},
})
req, _ := http.NewRequest("POST", "https://api.publiq.digital/v1/emails", bytes.NewReader(body))
req.Header.Set("Authorization", "Bearer "+os.Getenv("PUBLIQ_API_KEY"))
req.Header.Set("Content-Type", "application/json")
res, err := http.DefaultClient.Do(req)
if err != nil {
return err
}
defer res.Body.Close()
return nil
}Buenas prácticas
- Llama a Publiq siempre desde el servidor — la API key va en el header
Authorization, nunca en el cliente. - En
429/5xx, reintenta con backoff exponencial (respetaRetry-After). - Prefiere
templateKeysobre HTML inline para mantener el contenido versionado. - Maneja los errores por el campo
error.codede la respuesta — ver Errores. - Envía desde un dominio verificado — ver Dominios.