#[non_exhaustive]pub struct ParsedEmail {Show 17 fields
pub message_id: Option<String>,
pub in_reply_to: Vec<String>,
pub references: Vec<String>,
pub subject: Option<String>,
pub from: Vec<Address>,
pub sender: Option<Address>,
pub to: Vec<Address>,
pub cc: Vec<Address>,
pub bcc: Vec<Address>,
pub reply_to: Vec<Address>,
pub date: Option<DateTime>,
pub body_text: Option<String>,
pub body_html: Option<String>,
pub attachments: Vec<ParsedAttachment>,
pub raw_headers: String,
pub extra_headers: Vec<(String, String)>,
pub size: u64,
}Expand description
A parsed email message.
Produced by crate::parse_email. All fields are owned.
Missing or unparseable optional fields are None.
§References
- RFC 5322 (message structure)
- RFC 2045–2046 (MIME body parts)
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.message_id: Option<String>Message-ID with angle brackets stripped (RFC 5322 Section 3.6.4).
This field uses String rather than MessageId because parsed
messages may originate from non-conformant sources whose message IDs
do not pass strict RFC 5322 validation. The parser follows Postel’s
law: accept what you can, even if the value is technically malformed.
OutgoingEmail::in_reply_to and OutgoingEmail::references use
the validated MessageId type to ensure outgoing messages are
strictly conformant.
in_reply_to: Vec<String>All In-Reply-To message-ids, angle brackets stripped (RFC 5322 Section 3.6.4).
RFC 5322: in-reply-to = "In-Reply-To:" 1*msg-id CRLF — multiple
message-IDs are valid. Each element is a single message-ID without
angle brackets.
Uses String rather than MessageId for the same reason as
message_id: parsed messages may contain
non-conformant IDs that would fail strict validation.
references: Vec<String>All References message-ids, angle brackets stripped (RFC 5322 Section 3.6.4).
RFC 5322: references = "References:" 1*msg-id CRLF. Each element is
a single message-ID without angle brackets.
Uses String rather than MessageId for the same reason as
message_id: parsed messages may contain
non-conformant IDs that would fail strict validation.
subject: Option<String>Decoded subject (RFC 5322 Section 3.6.5, RFC 2047 encoded words decoded).
from: Vec<Address>Originator mailboxes (RFC 5322 Section 3.6.2: from = "From:" mailbox-list).
sender: Option<Address>The agent responsible for actual transmission of the message
(RFC 5322 Section 3.6.2: sender = "Sender:" mailbox).
Contains exactly one mailbox. Required when From contains multiple
addresses; otherwise optional. None when the header is absent.
to: Vec<Address>To recipients (RFC 5322 Section 3.6.3).
cc: Vec<Address>Cc recipients (RFC 5322 Section 3.6.3).
bcc: Vec<Address>Bcc recipients (RFC 5322 Section 3.6.3).
reply_to: Vec<Address>Reply-To addresses (RFC 5322 Section 3.6.2).
date: Option<DateTime>Parsed date with original timezone offset preserved (RFC 5322 Section 3.3).
body_text: Option<String>First text/plain body part, decoded to UTF-8.
body_html: Option<String>First text/html body part, decoded to UTF-8.
attachments: Vec<ParsedAttachment>Detected attachments with IMAP section numbers.
raw_headers: StringRaw header bytes as a String (everything before the header/body separator).
extra_headers: Vec<(String, String)>Optional fields not defined by RFC 5322 (RFC 5322 Section 3.6.8).
Contains all headers that are not one of the well-known structured
headers (From, To, Cc, Bcc, Reply-To, Subject, Date, Message-ID,
In-Reply-To, References, Sender, Content-Type,
Content-Transfer-Encoding, MIME-Version), plus any top-level
Content-Disposition or Content-ID field preserved for RFC 2183
Section 2.10 and RFC 2045 Section 7 consumers. Each entry is a
(lowercase-name, decoded-value) pair, preserving the order they
appeared in the message.
size: u64Total byte count of the input.
Implementations§
Source§impl ParsedEmail
impl ParsedEmail
Sourcepub fn validated_extra_headers(&self) -> Vec<(HeaderName, String)>
pub fn validated_extra_headers(&self) -> Vec<(HeaderName, String)>
Convert extra headers to validated (HeaderName, String) pairs
suitable for use in OutgoingEmail::extra_headers.
Headers whose names fail RFC 5322 Section 2.2 validation are silently dropped — such names originate from non-conformant messages and cannot be reproduced in well-formed output.
Trait Implementations§
Source§impl Clone for ParsedEmail
impl Clone for ParsedEmail
Source§fn clone(&self) -> ParsedEmail
fn clone(&self) -> ParsedEmail
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more