Docs / SDK / Rust / Mail
Rust — módulo Mail
🚧 En proceso de liberación Todavía no implementado en el SDK de Rust. El contrato completo (entry points, tipos de datos, ejemplos que sí compilan) ya está fijado en el módulo equivalente de Go — úsalo como referencia mientras se completa este port.
Contrato ya fijado (stub)
El módulo mail.rs ya existe en el repositorio con los mismos structs que el SDK de Go — send() y status() devuelven Err todavía; la capa de transporte HTTP (WaApi en lib.rs) ya está implementada (la usa el módulo DNS, que sí es real), solo falta conectar Mail a ella.
use std::collections::HashMap;
use webability_rust::mail::{Mail, SendRequest, Address, Recipient, queue_status};
let mail = Mail::new(&api);
let result = mail.send(SendRequest {
from: Address { email: "no-reply@tuempresa.com".into(), name: "".into() },
to: Recipient { email: "cliente@ejemplo.com".into(), name: "".into(), vars: Default::default() },
template: "".into(),
subject: "Confirma tu compra".into(),
html: "Hola {{nombre}}".into(),
text: "".into(),
tags: vec![],
track_opens: false,
track_clicks: false,
wait_send: true,
})?;
// result.queue_status: queue_status::PENDING | ::PROCESSING | ::SENT | ::ERROR
let status = mail.status(result.queue_key)?;
// O con una plantilla ya registrada, en vez de subject/html/text:
let result2 = mail.send(SendRequest {
from: Address { email: "no-reply@tuempresa.com".into(), name: "".into() },
to: Recipient {
email: "cliente@ejemplo.com".into(), name: "".into(),
vars: HashMap::from([("nombre".into(), "Ana".into()), ("codigo".into(), "482913".into())]),
},
template: "recuperacion".into(),
subject: "".into(), html: "".into(), text: "".into(),
tags: vec![], track_opens: false, track_clicks: false, wait_send: false,
})?;
El campo template (String, vacío si no aplica) es el id de una plantilla ya registrada y activa — el servidor valida que exista antes de encolar el correo y responde con error (no un envío fallido en segundo plano) si no. Ver /documentacion/mail — Con plantilla registrada para el detalle completo.
¿Dónde se crean las plantillas?
Las plantillas no se crean por API en ningún SDK — se agregan y editan desde Consola → Correos → Plantillas. El SDK solo referencia el id que le pongas ahí.
Mientras tanto
- • Módulo Mail en Go — mismos entry points, mismo contrato de datos.
- • /documentacion/mail — referencia completa de la API HTTP.
- • SDK general de Rust — instalación y autenticación.