pub struct MimeMessage {
pub headers: HeaderMap,
pub body: String,
pub message_type: Option<MimeMultipartType>,
pub message_type_params: Option<HashMap<String, String>>,
pub children: Vec<MimeMessage>,
pub boundary: String,
}
Expand description
Represents a MIME message [unstable]
Fields§
§headers: HeaderMap
The headers for this message
body: String
The content of this message
Keep in mind that this is the undecoded form, so may be quoted-printable or base64 encoded.
message_type: Option<MimeMultipartType>
The MIME multipart message type of this message, or None
if the message
is not a multipart message.
message_type_params: Option<HashMap<String, String>>
Any additional parameters of the MIME multipart header, not including the boundary.
children: Vec<MimeMessage>
The sub-messages of this message
boundary: String
The boundary used for MIME multipart messages
This will always be set, even if the message only has a single part
Implementations§
Source§impl MimeMessage
impl MimeMessage
Sourcepub fn new(body: String) -> MimeMessage
pub fn new(body: String) -> MimeMessage
[unstable]
Examples found in repository?
5fn main() {
6 let parts = vec![
7 MimeMessage::new("First part".to_string()),
8 MimeMessage::new("Second part".to_string()),
9 ];
10
11 let mut message = MimeMessage::new("Parent".to_string());
12
13 for part in parts.into_iter() {
14 message.children.push(part);
15 }
16
17 message.headers.insert(
18 Header::new_with_value(
19 "To".to_string(),
20 vec![
21 Address::new_mailbox_with_name(
22 "John Doe".to_string(),
23 "john@example.org".to_string(),
24 ),
25 Address::new_mailbox_with_name(
26 "Joe Blogs".to_string(),
27 "joe@example.org".to_string(),
28 ),
29 Address::new_mailbox_with_name(
30 "Mr Black".to_string(),
31 "mafia_black@example.org".to_string(),
32 ),
33 ],
34 )
35 .unwrap(),
36 );
37
38 message.update_headers();
39
40 println!("{}", message.as_string());
41}
pub fn new_with_children( body: String, message_type: MimeMultipartType, children: Vec<MimeMessage>, ) -> MimeMessage
pub fn new_with_boundary( body: String, message_type: MimeMultipartType, children: Vec<MimeMessage>, boundary: String, ) -> MimeMessage
pub fn new_with_boundary_and_params( body: String, message_type: MimeMultipartType, children: Vec<MimeMessage>, boundary: String, message_type_params: Option<HashMap<String, String>>, ) -> MimeMessage
pub fn new_blank_message() -> MimeMessage
Sourcepub fn update_headers(&mut self)
pub fn update_headers(&mut self)
Update the headers on this message based on the internal state.
When certain properties of the message are modified, the headers used to represent them are not automatically updated. Call this if these are changed.
Examples found in repository?
5fn main() {
6 let parts = vec![
7 MimeMessage::new("First part".to_string()),
8 MimeMessage::new("Second part".to_string()),
9 ];
10
11 let mut message = MimeMessage::new("Parent".to_string());
12
13 for part in parts.into_iter() {
14 message.children.push(part);
15 }
16
17 message.headers.insert(
18 Header::new_with_value(
19 "To".to_string(),
20 vec![
21 Address::new_mailbox_with_name(
22 "John Doe".to_string(),
23 "john@example.org".to_string(),
24 ),
25 Address::new_mailbox_with_name(
26 "Joe Blogs".to_string(),
27 "joe@example.org".to_string(),
28 ),
29 Address::new_mailbox_with_name(
30 "Mr Black".to_string(),
31 "mafia_black@example.org".to_string(),
32 ),
33 ],
34 )
35 .unwrap(),
36 );
37
38 message.update_headers();
39
40 println!("{}", message.as_string());
41}
Sourcepub fn parse(s: &str) -> ParsingResult<MimeMessage>
pub fn parse(s: &str) -> ParsingResult<MimeMessage>
Parse s
into a MimeMessage.
Recurses down into each message, supporting an unlimited depth of messages.
Be warned that each sub-message that fails to be parsed will be thrown away. [unstable]
Examples found in repository?
9fn main() {
10 let args: Vec<_> = env::args().collect();
11 assert!(args.len() > 1);
12 let msg_path = Path::new(&args[1]);
13
14 let mut file = File::open(&msg_path).expect("can't open file");
15 let raw_msg_bytes = {
16 let mut rv: Vec<u8> = vec![];
17 file.read_to_end(&mut rv).expect("can't read from file");
18 rv
19 };
20 let raw_msg = String::from_utf8_lossy(&raw_msg_bytes);
21
22 println!("INPUT:");
23 println!("{}", &raw_msg);
24
25 let msg = MimeMessage::parse(&raw_msg[..]).unwrap();
26
27 println!("PARSED:");
28 println!("{}", msg.as_string());
29}
Sourcepub fn as_string(&self) -> String
pub fn as_string(&self) -> String
Examples found in repository?
9fn main() {
10 let args: Vec<_> = env::args().collect();
11 assert!(args.len() > 1);
12 let msg_path = Path::new(&args[1]);
13
14 let mut file = File::open(&msg_path).expect("can't open file");
15 let raw_msg_bytes = {
16 let mut rv: Vec<u8> = vec![];
17 file.read_to_end(&mut rv).expect("can't read from file");
18 rv
19 };
20 let raw_msg = String::from_utf8_lossy(&raw_msg_bytes);
21
22 println!("INPUT:");
23 println!("{}", &raw_msg);
24
25 let msg = MimeMessage::parse(&raw_msg[..]).unwrap();
26
27 println!("PARSED:");
28 println!("{}", msg.as_string());
29}
More examples
5fn main() {
6 let parts = vec![
7 MimeMessage::new("First part".to_string()),
8 MimeMessage::new("Second part".to_string()),
9 ];
10
11 let mut message = MimeMessage::new("Parent".to_string());
12
13 for part in parts.into_iter() {
14 message.children.push(part);
15 }
16
17 message.headers.insert(
18 Header::new_with_value(
19 "To".to_string(),
20 vec![
21 Address::new_mailbox_with_name(
22 "John Doe".to_string(),
23 "john@example.org".to_string(),
24 ),
25 Address::new_mailbox_with_name(
26 "Joe Blogs".to_string(),
27 "joe@example.org".to_string(),
28 ),
29 Address::new_mailbox_with_name(
30 "Mr Black".to_string(),
31 "mafia_black@example.org".to_string(),
32 ),
33 ],
34 )
35 .unwrap(),
36 );
37
38 message.update_headers();
39
40 println!("{}", message.as_string());
41}
pub fn as_string_without_headers(&self) -> String
Sourcepub fn decoded_body_bytes(&self) -> Option<Vec<u8>>
pub fn decoded_body_bytes(&self) -> Option<Vec<u8>>
Decode the body of this message, as a series of bytes
Sourcepub fn decoded_body_string(&self) -> ParsingResult<String>
pub fn decoded_body_string(&self) -> ParsingResult<String>
Decode the body of this message, as a string.
This takes into account any charset as set on the Content-Type
header,
decoding the bytes with this character set.
Trait Implementations§
Source§impl Clone for MimeMessage
impl Clone for MimeMessage
Source§fn clone(&self) -> MimeMessage
fn clone(&self) -> MimeMessage
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more