1use crate::MessageConformance;
2use thiserror::Error;
3
4#[derive(Error, Debug, Clone, PartialEq)]
5pub enum MailParsingError {
6 #[error("invalid header: {0}")]
7 HeaderParse(String),
8 #[error("while assigning header '{header_name}': {error}")]
9 InvalidHeaderValueDuringAssignment {
10 header_name: String,
11 error: Box<MailParsingError>,
12 },
13 #[error("while parsing header '{header_name}': {error}")]
14 InvalidHeaderValueDuringGet {
15 header_name: String,
16 error: Box<MailParsingError>,
17 },
18 #[error("Header {0} not found in mime part")]
19 MissingHeader(String),
20 #[error("Unknown Mime-Version: {0}")]
21 UnknownMimeVersion(String),
22 #[error("Invalid Content-Transfer-Encoding: {0}")]
23 InvalidContentTransferEncoding(String),
24 #[error("parsing body: {0}")]
25 BodyParse(String),
26 #[error("Unexpected MimePart structure during write_message: {0}")]
27 WriteMessageWtf(&'static str),
28 #[error("IO error during write_message")]
29 WriteMessageIOError,
30 #[error("Error building message: {0}")]
31 BuildError(&'static str),
32 #[error("Error parsing Date header: {0}")]
33 ChronoError(chrono::format::ParseError),
34 #[error("Mime Tree has too many child parts")]
35 TooManyParts,
36 #[error("8-bit found when 7-bit is required")]
37 EightBit,
38 #[error("Message has conformance issues: {}", .0.to_string())]
39 ConformanceIssues(MessageConformance),
40 #[error("Failed to detect the charset: {0}")]
41 CharsetDetectionFailed(String),
42}