diff --git a/src/message/mimebody.rs b/src/message/mimebody.rs index a2265d0..bb61e48 100644 --- a/src/message/mimebody.rs +++ b/src/message/mimebody.rs @@ -1,3 +1,5 @@ +use std::io::Write; + use crate::message::{ header::{ContentTransferEncoding, ContentType, Header, Headers}, EmailFormat, IntoBody, @@ -132,7 +134,8 @@ impl SinglePart { impl EmailFormat for SinglePart { fn format(&self, out: &mut Vec) { - out.extend_from_slice(self.headers.to_string().as_bytes()); + write!(out, "{}", self.headers) + .expect("A Write implementation panicked while formatting headers"); out.extend_from_slice(b"\r\n"); out.extend_from_slice(&self.body); out.extend_from_slice(b"\r\n"); @@ -390,7 +393,8 @@ impl MultiPart { impl EmailFormat for MultiPart { fn format(&self, out: &mut Vec) { - out.extend_from_slice(self.headers.to_string().as_bytes()); + write!(out, "{}", self.headers) + .expect("A Write implementation panicked while formatting headers"); out.extend_from_slice(b"\r\n"); let boundary = self.boundary(); diff --git a/src/message/mod.rs b/src/message/mod.rs index 670d8e6..dcfa09c 100644 --- a/src/message/mod.rs +++ b/src/message/mod.rs @@ -250,7 +250,7 @@ mod mailbox; mod mimebody; mod utf8_b; -use std::{convert::TryFrom, time::SystemTime}; +use std::{convert::TryFrom, io::Write, time::SystemTime}; use uuid::Uuid; @@ -533,7 +533,8 @@ impl Message { impl EmailFormat for Message { fn format(&self, out: &mut Vec) { - out.extend_from_slice(self.headers.to_string().as_bytes()); + write!(out, "{}", self.headers) + .expect("A Write implementation panicked while formatting headers"); match &self.body { MessageBody::Mime(p) => p.format(out),