mirror of
https://github.com/chatmail/core.git
synced 2026-05-14 12:26:31 +03:00
on sending, set Sender:-header if we have an overridden name
This commit is contained in:
@@ -42,6 +42,15 @@ pub enum Loaded {
|
|||||||
pub struct MimeFactory<'a> {
|
pub struct MimeFactory<'a> {
|
||||||
from_addr: String,
|
from_addr: String,
|
||||||
from_displayname: String,
|
from_displayname: String,
|
||||||
|
|
||||||
|
/// Goes to the `Sender:`-header, if set.
|
||||||
|
/// For overridden names, `sender_displayname` is set to the
|
||||||
|
/// config-name while `from_displayname` is set to the overridden name.
|
||||||
|
/// From the perspective of the receiver,
|
||||||
|
/// a set `Sender:`-header is used as an indicator that the name is overridden;
|
||||||
|
/// names are alsways read from the `From:`-header.
|
||||||
|
sender_displayname: Option<String>,
|
||||||
|
|
||||||
selfstatus: String,
|
selfstatus: String,
|
||||||
|
|
||||||
/// Vector of pairs of recipient name and address
|
/// Vector of pairs of recipient name and address
|
||||||
@@ -82,10 +91,18 @@ impl<'a> MimeFactory<'a> {
|
|||||||
.get_config(Config::ConfiguredAddr)
|
.get_config(Config::ConfiguredAddr)
|
||||||
.await
|
.await
|
||||||
.unwrap_or_default();
|
.unwrap_or_default();
|
||||||
let from_displayname = context
|
|
||||||
|
let config_displayname = context
|
||||||
.get_config(Config::Displayname)
|
.get_config(Config::Displayname)
|
||||||
.await
|
.await
|
||||||
.unwrap_or_default();
|
.unwrap_or_default();
|
||||||
|
let (from_displayname, sender_displayname) =
|
||||||
|
if let Some(override_name) = msg.param.get(Param::OverrideSenderDisplayname) {
|
||||||
|
(override_name.to_string(), Some(config_displayname))
|
||||||
|
} else {
|
||||||
|
(config_displayname, None)
|
||||||
|
};
|
||||||
|
|
||||||
let mut recipients = Vec::with_capacity(5);
|
let mut recipients = Vec::with_capacity(5);
|
||||||
let mut req_mdn = false;
|
let mut req_mdn = false;
|
||||||
|
|
||||||
@@ -142,6 +159,7 @@ impl<'a> MimeFactory<'a> {
|
|||||||
let factory = MimeFactory {
|
let factory = MimeFactory {
|
||||||
from_addr,
|
from_addr,
|
||||||
from_displayname,
|
from_displayname,
|
||||||
|
sender_displayname,
|
||||||
selfstatus: context
|
selfstatus: context
|
||||||
.get_config(Config::Selfstatus)
|
.get_config(Config::Selfstatus)
|
||||||
.await
|
.await
|
||||||
@@ -185,6 +203,7 @@ impl<'a> MimeFactory<'a> {
|
|||||||
let res = MimeFactory::<'a> {
|
let res = MimeFactory::<'a> {
|
||||||
from_addr,
|
from_addr,
|
||||||
from_displayname,
|
from_displayname,
|
||||||
|
sender_displayname: None,
|
||||||
selfstatus,
|
selfstatus,
|
||||||
recipients: vec![(
|
recipients: vec![(
|
||||||
contact.get_authname().to_string(),
|
contact.get_authname().to_string(),
|
||||||
@@ -508,6 +527,12 @@ impl<'a> MimeFactory<'a> {
|
|||||||
|
|
||||||
unprotected_headers.push(Header::new_with_value("To".into(), to).unwrap());
|
unprotected_headers.push(Header::new_with_value("To".into(), to).unwrap());
|
||||||
unprotected_headers.push(Header::new_with_value("From".into(), vec![from]).unwrap());
|
unprotected_headers.push(Header::new_with_value("From".into(), vec![from]).unwrap());
|
||||||
|
if let Some(sender_displayname) = &self.sender_displayname {
|
||||||
|
let sender =
|
||||||
|
Address::new_mailbox_with_name(sender_displayname.clone(), self.from_addr.clone());
|
||||||
|
unprotected_headers
|
||||||
|
.push(Header::new_with_value("Sender".into(), vec![sender]).unwrap());
|
||||||
|
}
|
||||||
|
|
||||||
let mut is_gossiped = false;
|
let mut is_gossiped = false;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user