Incorrect accountId used in JMAP email set and import methods (fixes #1777)

This commit is contained in:
mdecimus
2025-07-26 19:05:02 +02:00
parent 654f296d45
commit 20a3868938
2 changed files with 23 additions and 2 deletions

View File

@@ -18,6 +18,7 @@ use jmap_proto::{
};
use mail_parser::MessageParser;
use std::future::Future;
use trc::AddContext;
use utils::map::vec_map::VecMap;
pub trait EmailImport: Sync + Send {
@@ -46,6 +47,16 @@ impl EmailImport for Server {
None
};
// Obtain import access token
let import_access_token = if account_id != access_token.primary_id() {
self.get_access_token(account_id)
.await
.caused_by(trc::location!())?
.into()
} else {
None
};
let mut response = ImportEmailResponse {
account_id: request.account_id,
new_state: old_state.clone(),
@@ -114,7 +125,7 @@ impl EmailImport for Server {
.email_ingest(IngestEmail {
raw_message: &raw_message,
message: MessageParser::new().parse(&raw_message),
access_token,
access_token: import_access_token.as_deref().unwrap_or(access_token),
mailbox_ids,
keywords: email.keywords,
received_at: email.received_at.map(|r| r.into()),

View File

@@ -84,6 +84,16 @@ impl EmailSet for Server {
(None, None, None)
};
// Obtain import access token
let import_access_token = if account_id != access_token.primary_id() {
self.get_access_token(account_id)
.await
.caused_by(trc::location!())?
.into()
} else {
None
};
let mut last_change_id = None;
let will_destroy = request.unwrap_destroy();
@@ -703,7 +713,7 @@ impl EmailSet for Server {
.email_ingest(IngestEmail {
raw_message: &raw_message,
message: MessageParser::new().parse(&raw_message),
access_token,
access_token: import_access_token.as_deref().unwrap_or(access_token),
mailbox_ids: mailboxes,
keywords,
received_at,