#[non_exhaustive]
#[derive(Debug, Clone, PartialEq, Eq, thiserror::Error)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum Error {
#[error("empty input: no message bytes provided")]
EmptyInput,
#[error("missing required From header (RFC 5322 Section 3.6.2)")]
MissingFrom,
#[error("invalid date: {0}")]
InvalidDate(String),
#[error("invalid email address: {0}")]
InvalidAddress(String),
#[error(
"Sender header required when From has multiple addresses \
(RFC 5322 Section 3.6.2)"
)]
MissingSender,
#[error("invalid header name: {0}")]
InvalidHeaderName(String),
#[error("invalid message-ID: {0}")]
InvalidMessageId(String),
#[error("header line too long: {0}")]
HeaderLineTooLong(String),
#[error("reserved header name: {0}")]
ReservedHeaderName(String),
#[error("invalid attachment: {0}")]
InvalidAttachment(String),
#[error("invalid trace header: {0}")]
InvalidTraceHeader(String),
#[error("invalid resent header: {0}")]
InvalidResentHeader(String),
}
#[cfg(test)]
#[path = "error_tests.rs"]
mod tests;