Add user-configurable option "delete_server_after"

The option sets timer in seconds after which all parts of the message
are deleted from the server.
This commit is contained in:
Alexander Krotov
2020-02-24 17:05:26 +03:00
parent 4f4241ba3a
commit a653e469f2
2 changed files with 31 additions and 2 deletions

View File

@@ -65,6 +65,14 @@ pub enum Config {
#[strum(props(default = "0"))]
KeyGenType,
/// Timer in seconds after which the message is deleted from the
/// server.
///
/// Equals to -1 by default, which means the message is never
/// deleted.
#[strum(props(default = "-1"))]
DeleteServerAfter,
SaveMimeHeaders,
ConfiguredAddr,
ConfiguredMailServer,

View File

@@ -192,7 +192,6 @@ pub fn dc_receive_imf(
};
}
// if we delete we don't need to try moving messages
if needs_delete_job && !created_db_entries.is_empty() {
for db_entry in &created_db_entries {
job_add(
@@ -204,7 +203,29 @@ pub fn dc_receive_imf(
);
}
} else {
context.do_heuristics_moves(server_folder.as_ref(), insert_msg_id);
// Get user-configured server deletion
let delete_server_after = context.get_config_int(Config::DeleteServerAfter);
if delete_server_after != 0 {
// Move message if we don't delete it immediately.
context.do_heuristics_moves(server_folder.as_ref(), insert_msg_id);
}
if delete_server_after >= 0 {
info!(
context,
"Scheduling message deletion in {} seconds", delete_server_after
);
for db_entry in &created_db_entries {
job_add(
context,
Action::DeleteMsgOnImap,
db_entry.1.to_u32() as i32,
Params::new(),
delete_server_after as i64,
);
}
}
}
info!(