mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2025-10-12 02:26:09 -05:00
Enhancement: check for mail destination directory, log post-consume errors (#7808)
--------- Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
This commit is contained in:

committed by
GitHub

parent
f8d79b012f
commit
b3487f1843
@@ -28,6 +28,7 @@ from imap_tools import MailboxFolderSelectError
|
||||
from imap_tools import MailBoxUnencrypted
|
||||
from imap_tools import MailMessage
|
||||
from imap_tools import MailMessageFlags
|
||||
from imap_tools import errors
|
||||
from imap_tools.mailbox import MailBoxTls
|
||||
from imap_tools.query import LogicOperator
|
||||
|
||||
@@ -266,7 +267,14 @@ def apply_mail_action(
|
||||
M.folder.set(rule.folder)
|
||||
|
||||
action = get_rule_action(rule, supports_gmail_labels)
|
||||
action.post_consume(M, message_uid, rule.action_parameter)
|
||||
try:
|
||||
action.post_consume(M, message_uid, rule.action_parameter)
|
||||
except errors.ImapToolsError:
|
||||
logger = logging.getLogger("paperless_mail")
|
||||
logger.exception(
|
||||
"Error while processing mail action during post_consume",
|
||||
)
|
||||
raise
|
||||
|
||||
ProcessedMail.objects.create(
|
||||
owner=rule.owner,
|
||||
@@ -570,13 +578,17 @@ class MailAccountHandler(LoggingMixin):
|
||||
rule: MailRule,
|
||||
supports_gmail_labels: bool,
|
||||
):
|
||||
self.log.debug(f"Rule {rule}: Selecting folder {rule.folder}")
|
||||
|
||||
folders = [rule.folder]
|
||||
# In case of MOVE, make sure also the destination exists
|
||||
if rule.action == MailRule.MailAction.MOVE:
|
||||
folders.insert(0, rule.action_parameter)
|
||||
try:
|
||||
M.folder.set(rule.folder)
|
||||
for folder in folders:
|
||||
self.log.debug(f"Rule {rule}: Selecting folder {folder}")
|
||||
M.folder.set(folder)
|
||||
except MailboxFolderSelectError as err:
|
||||
self.log.error(
|
||||
f"Unable to access folder {rule.folder}, attempting folder listing",
|
||||
f"Unable to access folder {folder}, attempting folder listing",
|
||||
)
|
||||
try:
|
||||
for folder_info in M.folder.list():
|
||||
@@ -588,7 +600,7 @@ class MailAccountHandler(LoggingMixin):
|
||||
)
|
||||
|
||||
raise MailError(
|
||||
f"Rule {rule}: Folder {rule.folder} "
|
||||
f"Rule {rule}: Folder {folder} "
|
||||
f"does not exist in account {rule.account}",
|
||||
) from err
|
||||
|
||||
|
Reference in New Issue
Block a user