mirror of
https://github.com/chatmail/core.git
synced 2026-05-19 23:06:32 +03:00
base64-encode avatar into the hidden header
This commit is contained in:
@@ -1089,12 +1089,10 @@ impl<'a> MimeFactory<'a> {
|
|||||||
if self.attach_selfavatar {
|
if self.attach_selfavatar {
|
||||||
match context.get_config(Config::Selfavatar).await? {
|
match context.get_config(Config::Selfavatar).await? {
|
||||||
Some(path) => match build_selfavatar_file(context, &path) {
|
Some(path) => match build_selfavatar_file(context, &path) {
|
||||||
Ok((part, filename)) => {
|
Ok(avatar) => headers.hidden.push(Header::new(
|
||||||
parts.push(part);
|
"Chat-User-Avatar".into(),
|
||||||
headers
|
format!("base64:{}", avatar),
|
||||||
.protected
|
)),
|
||||||
.push(Header::new("Chat-User-Avatar".into(), filename))
|
|
||||||
}
|
|
||||||
Err(err) => warn!(context, "mimefactory: cannot attach selfavatar: {}", err),
|
Err(err) => warn!(context, "mimefactory: cannot attach selfavatar: {}", err),
|
||||||
},
|
},
|
||||||
None => headers
|
None => headers
|
||||||
@@ -1279,29 +1277,11 @@ async fn build_body_file(
|
|||||||
Ok((mail, filename_to_send))
|
Ok((mail, filename_to_send))
|
||||||
}
|
}
|
||||||
|
|
||||||
fn build_selfavatar_file(context: &Context, path: &str) -> Result<(PartBuilder, String)> {
|
fn build_selfavatar_file(context: &Context, path: &str) -> Result<String> {
|
||||||
let blob = BlobObject::from_path(context, path)?;
|
let blob = BlobObject::from_path(context, path)?;
|
||||||
let filename_to_send = match blob.suffix() {
|
|
||||||
Some(suffix) => format!("avatar.{}", suffix),
|
|
||||||
None => "avatar".to_string(),
|
|
||||||
};
|
|
||||||
let mimetype = match message::guess_msgtype_from_suffix(blob.as_rel_path()) {
|
|
||||||
Some(res) => res.1.parse()?,
|
|
||||||
None => mime::APPLICATION_OCTET_STREAM,
|
|
||||||
};
|
|
||||||
let body = std::fs::read(blob.to_abs_path())?;
|
let body = std::fs::read(blob.to_abs_path())?;
|
||||||
let encoded_body = wrapped_base64_encode(&body);
|
let encoded_body = wrapped_base64_encode(&body);
|
||||||
|
Ok(encoded_body)
|
||||||
let part = PartBuilder::new()
|
|
||||||
.content_type(&mimetype)
|
|
||||||
.header((
|
|
||||||
"Content-Disposition",
|
|
||||||
format!("attachment; filename=\"{}\"", &filename_to_send),
|
|
||||||
))
|
|
||||||
.header(("Content-Transfer-Encoding", "base64"))
|
|
||||||
.body(encoded_body);
|
|
||||||
|
|
||||||
Ok((part, filename_to_send))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn recipients_contain_addr(recipients: &[(String, String)], addr: &str) -> bool {
|
fn recipients_contain_addr(recipients: &[(String, String)], addr: &str) -> bool {
|
||||||
|
|||||||
Reference in New Issue
Block a user