From afc23de20f9aa576508c31e9e073a17253d21492 Mon Sep 17 00:00:00 2001 From: Maximb Date: Wed, 23 May 2018 14:22:46 +0000 Subject: [PATCH 1/2] Added attach_from_vec function to email builder --- lettre_email/src/lib.rs | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/lettre_email/src/lib.rs b/lettre_email/src/lib.rs index 8bdbdf9..dc07f6e 100644 --- a/lettre_email/src/lib.rs +++ b/lettre_email/src/lib.rs @@ -217,7 +217,7 @@ impl EmailBuilder { self } - /// Adds an attachment to the email + /// Adds an attachment to the email from a file pub fn attachment( self, path: &Path, @@ -266,6 +266,32 @@ impl EmailBuilder { Ok(self.message_type(MimeMultipartType::Mixed).child(content)) } + /// Adds an attachment to the email from a vector of bytes. + /// This is usefull when your attachment is actually not a file, but a sequence of bytes. + pub fn attach_from_vec( + self, + bytes_vec: Vec, + filename: &str, + content_type: &Mime, + ) -> Result { + let body = bytes_vec; + + let actual_filename = filename; + + let encoded_body = base64::encode(&body); + let content = PartBuilder::new() + .body(encoded_body) + .header(( + "Content-Disposition", + format!("attachment; filename=\"{}\"", actual_filename), + )) + .header(("Content-Type", content_type.to_string())) + .header(("Content-Transfer-Encoding", "base64")) + .build(); + + Ok(self.message_type(MimeMultipartType::Mixed).child(content)) + } + /// Set the message type pub fn message_type(mut self, message_type: MimeMultipartType) -> EmailBuilder { self.message = self.message.message_type(message_type); From ce932c15d648109f8c0f2c48d418842a845b6309 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=91=D0=B0=D1=80=D0=B0=D0=BD=D0=BE=D0=B2=20=D0=9C=D0=B0?= =?UTF-8?q?=D0=BA=D1=81=D0=B8=D0=BC=20=D0=98=D0=B3=D0=BE=D1=80=D0=B5=D0=B2?= =?UTF-8?q?=D0=B8=D1=87?= Date: Thu, 24 May 2018 10:31:34 +0300 Subject: [PATCH 2/2] Added reference to bytes_vec --- lettre_email/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lettre_email/src/lib.rs b/lettre_email/src/lib.rs index dc07f6e..2ba51f3 100644 --- a/lettre_email/src/lib.rs +++ b/lettre_email/src/lib.rs @@ -270,7 +270,7 @@ impl EmailBuilder { /// This is usefull when your attachment is actually not a file, but a sequence of bytes. pub fn attach_from_vec( self, - bytes_vec: Vec, + bytes_vec: &Vec, filename: &str, content_type: &Mime, ) -> Result {