mirror of
https://github.com/chatmail/core.git
synced 2026-04-21 15:36:30 +03:00
add more details to fallback NDN
if the NDN has no specific error text, but we know the failed recipient address, add these information the final message.
This commit is contained in:
@@ -1533,7 +1533,7 @@ pub async fn handle_mdn(
|
||||
pub(crate) async fn handle_ndn(
|
||||
context: &Context,
|
||||
failed: &FailureReport,
|
||||
error: &str,
|
||||
error: Option<String>,
|
||||
) -> Result<()> {
|
||||
if failed.rfc724_mid.is_empty() {
|
||||
return Ok(());
|
||||
@@ -1564,10 +1564,18 @@ pub(crate) async fn handle_ndn(
|
||||
)
|
||||
.await?;
|
||||
|
||||
let error = if let Some(error) = error {
|
||||
error
|
||||
} else if let Some(failed_recipient) = &failed.failed_recipient {
|
||||
format!("Delivery to {} failed.", failed_recipient).clone()
|
||||
} else {
|
||||
"Delivery to at least one recipient failed.".to_string()
|
||||
};
|
||||
|
||||
let mut first = true;
|
||||
for msg in msgs.into_iter() {
|
||||
let (msg_id, chat_id, chat_type) = msg?;
|
||||
set_msg_failed(context, msg_id, error).await;
|
||||
set_msg_failed(context, msg_id, &error).await;
|
||||
if first {
|
||||
// Add only one info msg for all failed messages
|
||||
ndn_maybe_add_info_msg(context, failed, chat_id, chat_type).await?;
|
||||
|
||||
@@ -1401,11 +1401,11 @@ impl MimeMessage {
|
||||
}
|
||||
|
||||
if let Some(failure_report) = &self.failure_report {
|
||||
let error = parts.iter().find(|p| p.typ == Viewtype::Text).map_or_else(
|
||||
|| "Non-Delivery-Notification without further details.".to_string(),
|
||||
|p| p.msg.clone(),
|
||||
);
|
||||
if let Err(e) = message::handle_ndn(context, failure_report, &error).await {
|
||||
let error = parts
|
||||
.iter()
|
||||
.find(|p| p.typ == Viewtype::Text)
|
||||
.map(|p| p.msg.clone());
|
||||
if let Err(e) = message::handle_ndn(context, failure_report, error).await {
|
||||
warn!(context, "Could not handle ndn: {}", e);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2647,7 +2647,7 @@ mod tests {
|
||||
"shenauithz@testrun.org",
|
||||
"Mr.un2NYERi1RM.lbQ5F9q-QyJ@tiscali.it",
|
||||
include_bytes!("../test-data/message/tiscali_ndn.eml"),
|
||||
Some("Non-Delivery-Notification without further details."),
|
||||
Some("Delivery to at least one recipient failed."),
|
||||
)
|
||||
.await;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user