#[derive(Debug, thiserror::Error)] pub enum EmailError { #[error("queue error: {0}")] Queue(#[from] queue::QueueError), #[error("serde error: {0}")] Serde(#[from] serde_json::Error), #[error("lettre smtp error: {0}")] Lettre(#[from] lettre::transport::smtp::Error), #[error("lettre address error: {0}")] Address(#[from] lettre::address::AddressError), #[error("lettre error: {0}")] LettreOther(#[from] lettre::error::Error), #[error("handlebars render error: {0}")] Template(#[from] handlebars::RenderError), #[error("handlebars template error: {0}")] TemplateRegister(#[from] handlebars::TemplateError), #[error("template not found: {0}")] TemplateNotFound(String), #[error("config invalid: {0}")] Config(String), #[error("base64 decode: {0}")] Base64(#[from] base64::DecodeError), #[error("attachment too large: {0} bytes exceeds limit {1}")] AttachmentTooLarge(usize, usize), #[error("missing required: {0}")] Missing(String), #[error("io: {0}")] Io(#[from] std::io::Error), }