mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2026-09-05 09:25:03 +00:00
Fix: truncate mail subjects to field max length (#13991)
This commit is contained in:
@@ -300,7 +300,7 @@ def apply_mail_action(
|
||||
folder=rule.folder,
|
||||
uid=message_uid,
|
||||
uid_validity=uid_validity,
|
||||
subject=message_subject,
|
||||
subject=message_subject[:256],
|
||||
received=message_date,
|
||||
status="SUCCESS",
|
||||
)
|
||||
@@ -312,7 +312,7 @@ def apply_mail_action(
|
||||
folder=rule.folder,
|
||||
uid=message_uid,
|
||||
uid_validity=uid_validity,
|
||||
subject=message_subject,
|
||||
subject=message_subject[:256],
|
||||
received=message_date,
|
||||
status="FAILED",
|
||||
error=traceback.format_exc(),
|
||||
@@ -347,7 +347,7 @@ def error_callback(
|
||||
uid=message_uid,
|
||||
uid_validity=uid_validity,
|
||||
defaults={
|
||||
"subject": message_subject,
|
||||
"subject": message_subject[:256],
|
||||
"received": received,
|
||||
"status": "FAILED",
|
||||
"error": traceback.format_exc(),
|
||||
@@ -947,7 +947,7 @@ class MailAccountHandler(LoggingMixin):
|
||||
folder=rule.folder,
|
||||
uid_validity=self._current_uid_validity,
|
||||
defaults={
|
||||
"subject": message.subject,
|
||||
"subject": message.subject[:256],
|
||||
"received": make_aware(message.date)
|
||||
if is_naive(message.date)
|
||||
else message.date,
|
||||
|
||||
@@ -665,6 +665,37 @@ class TestMail(
|
||||
1,
|
||||
)
|
||||
|
||||
def test_handle_empty_message_long_subject(self) -> None:
|
||||
"""
|
||||
GIVEN:
|
||||
- A mail with no attachments and a subject longer than the
|
||||
ProcessedMail.subject field
|
||||
WHEN:
|
||||
- The mail is handled by an attachments-only rule
|
||||
THEN:
|
||||
- The subject is truncated to the field length instead of raising
|
||||
"""
|
||||
message = self.mailMocker.messageBuilder.create_message(
|
||||
subject="A" * 300,
|
||||
attachments=[],
|
||||
)
|
||||
|
||||
account = MailAccount.objects.create()
|
||||
rule = MailRule.objects.create(
|
||||
account=account,
|
||||
consumption_scope=MailRule.ConsumptionScope.ATTACHMENTS_ONLY,
|
||||
)
|
||||
|
||||
self.mail_account_handler._handle_message(message, rule)
|
||||
|
||||
processed = ProcessedMail.objects.get(
|
||||
rule=rule,
|
||||
uid=message.uid,
|
||||
folder=rule.folder,
|
||||
)
|
||||
self.assertEqual(processed.status, "PROCESSED_WO_CONSUMPTION")
|
||||
self.assertEqual(processed.subject, "A" * 256)
|
||||
|
||||
def test_handle_unknown_mime_type(self) -> None:
|
||||
message = self.mailMocker.messageBuilder.create_message(
|
||||
attachments=[
|
||||
|
||||
Reference in New Issue
Block a user