Docs / SDK / Go / Mail

Go — módulo Mail

Paquete github.com/webability/webability-go/mail. Envuelve la API de correo transaccional (/v1/mail/*). Para campañas masivas a listas/segmentos, ver el módulo Marketing.

Importar y crear el objeto

import (
    "github.com/webability/webability-go/wa"
    "github.com/webability/webability-go/mail"
)

api := wa.New("tu-client-id", "tu-token-secreto")
m := mail.New(api)

Send(req mail.SendRequest)

POST /v1/mail/send — envía un correo a un solo destinatario.

out, err := m.Send(mail.SendRequest{
    From:    mail.Address{Email: "no-reply@tuempresa.com", Name: "Tu Empresa"},
    To:      mail.Recipient{Email: "cliente@ejemplo.com", Name: "Ana",
                             Vars: map[string]interface{}{"nombre": "Ana"}},
    Subject: "Confirma tu compra",
    HTML:    "<p>Hola {{nombre}}, tu compra fue confirmada.</p>",
})
if err != nil {
    log.Fatal(err)
}
fmt.Println("encolado:", out.QueueKey)

Devuelve *mail.SendResult{Status, QueueKey int, To string}.

SendBulk(req mail.SendBulkRequest)

POST /v1/mail/send-bulk — envía el mismo correo (con variables por destinatario) a varios destinatarios.

out, err := m.SendBulk(mail.SendBulkRequest{
    From:    mail.Address{Email: "newsletter@tuempresa.com", Name: "Tu Empresa"},
    Subject: "Novedades de la semana",
    HTML:    "<p>Hola {{nombre}}!</p>",
    Recipients: []mail.Recipient{
        {Email: "ana@ejemplo.com", Vars: map[string]interface{}{"nombre": "Ana"}},
        {Email: "luis@ejemplo.com", Vars: map[string]interface{}{"nombre": "Luis"}},
    },
})
if err != nil {
    log.Fatal(err)
}
fmt.Println(out.Queued, "encolados,", out.Failed, "fallidos")
for _, r := range out.Results {
    fmt.Println(r.Email, r.Status, r.Error)
}

Devuelve *mail.SendBulkResult{Status, Total, Queued, Failed int, Results []mail.SendBulkResultEntry}.

Este módulo envuelve el servicio de correo transaccional (envío por evento): Webability Mailing as a Service. Para campañas masivas a listas/segmentos, ver Marketing.