django-codenerix-email 4.0.42__py2.py3-none-any.whl → 4.0.43__py2.py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- __version__ = "4.0.42"
1
+ __version__ = "4.0.43"
2
2
 
3
3
  __authors__ = [
4
4
  "Juan Miguel Taboada Godoy <juanmi@juanmitaboada.com>",
@@ -591,7 +591,7 @@ class Command(BaseCommand):
591
591
  """
592
592
 
593
593
  # Method 1: Search in main headers (for direct replies)
594
- tracking_id = msg.get("X-Codenerix-Tracking-ID", None)
594
+ tracking_id = str(msg.get("X-Codenerix-Tracking-ID", "")) or None
595
595
 
596
596
  # Method 2: Search in attached parts (for bounces and forwards)
597
597
  if not tracking_id:
@@ -614,8 +614,13 @@ class Command(BaseCommand):
614
614
  ):
615
615
  original_msg = original_msg_payload[0]
616
616
  if isinstance(original_msg, Message):
617
- tracking_id = original_msg.get(
618
- "X-Codenerix-Tracking-ID"
617
+ tracking_id = (
618
+ str(
619
+ original_msg.get(
620
+ "X-Codenerix-Tracking-ID", ""
621
+ )
622
+ )
623
+ or None
619
624
  )
620
625
 
621
626
  elif content_type == "text/rfc822-headers":
@@ -632,8 +637,13 @@ class Command(BaseCommand):
632
637
 
633
638
  # Parse headers text into a Message object
634
639
  headers_msg = HeaderParser().parsestr(headers_text)
635
- tracking_id = headers_msg.get(
636
- "X-Codenerix-Tracking-ID"
640
+ tracking_id = (
641
+ str(
642
+ headers_msg.get(
643
+ "X-Codenerix-Tracking-ID", ""
644
+ )
645
+ )
646
+ or None
637
647
  )
638
648
 
639
649
  # Method 3: Search in the body text (fallback)
@@ -716,8 +726,10 @@ class Command(BaseCommand):
716
726
  status_headers = payload[0]
717
727
  if isinstance(status_headers, Message):
718
728
  # Extract Action and Status headers
719
- action = status_headers.get("Action", "").lower()
720
- status_code = status_headers.get("Status", "")
729
+ action = str(
730
+ status_headers.get("Action", "")
731
+ ).lower()
732
+ status_code = str(status_headers.get("Status", ""))
721
733
 
722
734
  # Check if action indicates failure
723
735
  if action == "failed":
@@ -747,13 +759,13 @@ class Command(BaseCommand):
747
759
 
748
760
  else:
749
761
  # Check for Auto-Submitted header
750
- if msg.get("Auto-Submitted", "").lower() in (
762
+ if str(msg.get("Auto-Submitted", "")).lower() in (
751
763
  "auto-replied",
752
764
  "auto-generated",
753
765
  ):
754
766
  # It could be a bounce, but also an "Out of Office",
755
767
  # so we combine it with a keyword search.
756
- subject = msg.get("Subject", "").lower()
768
+ subject = str(msg.get("Subject", "")).lower()
757
769
  bounce_keywords = [
758
770
  "undeliverable",
759
771
  "delivery failed",
@@ -770,8 +782,8 @@ class Command(BaseCommand):
770
782
  if not bounce_type:
771
783
  # We look for common bounce keywords in the From or Subject headers
772
784
  # We avoid false positives by requiring specific keywords.
773
- from_header = msg.get("From", "").lower()
774
- subject_header = msg.get("Subject", "").lower()
785
+ from_header = str(msg.get("From", "")).lower()
786
+ subject_header = str(msg.get("Subject", "")).lower()
775
787
 
776
788
  if "mailer-daemon@" in from_header or "postmaster@" in from_header:
777
789
  # Common bounce sender addresses
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: django-codenerix-email
3
- Version: 4.0.42
3
+ Version: 4.0.43
4
4
  Summary: Codenerix Email is a module that enables CODENERIX to set send emails in a general manner.
5
5
  Home-page: https://github.com/codenerix/django-codenerix-email
6
6
  Author: Juan Miguel Taboada Godoy <juanmi@juanmitaboada.com>, Juan Soler Ruiz <soleronline@gmail.com>
@@ -1,4 +1,4 @@
1
- codenerix_email/__init__.py,sha256=zUdeNRRlJihOcJjhw5Q9V7lfEz0fapMDZg6sDEI2688,149
1
+ codenerix_email/__init__.py,sha256=efAjcy3K16vkCTUwTZBXZJCKyPWRTdktfA2rHlSSY5A,149
2
2
  codenerix_email/admin.py,sha256=w259UKFk_opGEl6PJjYHXWAHQ_8emgqmiixKT5Rid4A,1180
3
3
  codenerix_email/apps.py,sha256=WXqu1XQibDDyCvvQYt2JbTK4GIpW8BNv5DCbRJS2mmk,149
4
4
  codenerix_email/forms.py,sha256=P5w-ebxLR1V10RFDqO_R5vvZV-vY6SLTzVb1OLdFZE0,5710
@@ -827,8 +827,8 @@ codenerix_email/.mypy_cache/3.10/zoneinfo/_common.data.json,sha256=e4xbNKL_yQ5h5
827
827
  codenerix_email/.mypy_cache/3.10/zoneinfo/_common.meta.json,sha256=5K19XWobpSjKwiv7bZFZRcxsEfoh7b-FhYcmqB-2Iic,1737
828
828
  codenerix_email/.mypy_cache/3.10/zoneinfo/_tzpath.data.json,sha256=CFx7Q1XfUhhuNX69prkxyirG8rfvEDCNgEHWQigKC_A,5632
829
829
  codenerix_email/.mypy_cache/3.10/zoneinfo/_tzpath.meta.json,sha256=d1HJ_xFBI1orlZSVhH0gHWLI-dJG3zY-ZOlctOl62yU,1765
830
- codenerix_email/__pycache__/__init__.cpython-310.pyc,sha256=l9GJtMt8iO4CEAQw7GF-VKHRSXKp1LM0u3anmv8DTNo,313
831
- codenerix_email/__pycache__/__init__.cpython-311.pyc,sha256=JdakKHcPF2vqH90_mlw7sAfIVJgpl_o6PgPOmfKFPnY,337
830
+ codenerix_email/__pycache__/__init__.cpython-310.pyc,sha256=UfkLIR72bavcAAq4Nvzaw3MNV8AZ_TOygeWPiF1bEEA,313
831
+ codenerix_email/__pycache__/__init__.cpython-311.pyc,sha256=6VfDHH5eKl_yjjxj0W72_x8VOOCPxsaQW2ESOP9yHxU,337
832
832
  codenerix_email/__pycache__/__init__.cpython-35.pyc,sha256=dl9lYAgrokJptUj3JAhiqTlX7d_CbncOxZeTc1USc88,308
833
833
  codenerix_email/__pycache__/__init__.cpython-37.pyc,sha256=5d1CeFU5DrfnwrRpvSw1bHvLN9hoHXjUA3ln3rXCDo8,306
834
834
  codenerix_email/__pycache__/__init__.cpython-39.pyc,sha256=0c6KWU_eOTlF5l9fNWv8l41b0LcfVQNUsqDvJTv2YyU,300
@@ -868,7 +868,7 @@ codenerix_email/management/__pycache__/__init__.cpython-35.pyc,sha256=sBoEWs6zdI
868
868
  codenerix_email/management/__pycache__/__init__.cpython-39.pyc,sha256=uPXklfliVd3b8pLOJQT9ZeKcqmJMrGychvt68BsPulY,168
869
869
  codenerix_email/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
870
870
  codenerix_email/management/commands/email_test.py,sha256=SPsiq0s48sEX_G3piNHq-c1gDOH800H2zTvM19ei2LY,5605
871
- codenerix_email/management/commands/emails_recv.py,sha256=C6DYD9WIT9vDDmSvxRf6Ms_SjoHMQYKZB49Bt7yr7cg,37354
871
+ codenerix_email/management/commands/emails_recv.py,sha256=DlKa4pRoCM2IrDPd2j8BY7I2ufl-rHRvavad3f66muc,37875
872
872
  codenerix_email/management/commands/emails_send.py,sha256=scCFklro4WVMYm-1ataSjUMsPT-Ie5u_DdA55CQcTCQ,7944
873
873
  codenerix_email/management/commands/recv_emails.py,sha256=aXmhdXlamiNxRpMIDSKBXUBhkOcwi5l_Pme7jSQUCME,273
874
874
  codenerix_email/management/commands/send_emails.py,sha256=a1MnpvZKAEFdXNfmI5oFUkVxy4PZ1AjaJS6GH90zeD0,273
@@ -1689,8 +1689,8 @@ codenerix_email/migrations/__pycache__/__init__.cpython-35.pyc,sha256=2g70xiMW6o
1689
1689
  codenerix_email/migrations/__pycache__/__init__.cpython-39.pyc,sha256=qNj2NH0YvoWPnCKxkVZPsEFsbM05y7t1njMskNISdVQ,168
1690
1690
  codenerix_email/static/codenerix_email/emailmessages_rows.html,sha256=cA2ru5ti9WnPhhvFNEpI2tTR7gZzUYXWdzngRKU6a7k,2196
1691
1691
  codenerix_email/static/codenerix_email/emailreceiveds_rows.html,sha256=u9DXVdzKhx9WlJgcK_cT2DfGp9bGIKTBn3LDQplB4g4,2032
1692
- django_codenerix_email-4.0.42.dist-info/LICENSE,sha256=IXMIpi75XsrJt1Sznt4EftT9c_4X0C9eqK4tHhH8H48,11339
1693
- django_codenerix_email-4.0.42.dist-info/METADATA,sha256=eATIXaTRThHDlWhFC90e3Ungre5mgBrglNznAm4rxhc,2676
1694
- django_codenerix_email-4.0.42.dist-info/WHEEL,sha256=z9j0xAa_JmUKMpmz72K0ZGALSM_n-wQVmGbleXx2VHg,110
1695
- django_codenerix_email-4.0.42.dist-info/top_level.txt,sha256=lljSA0iKE_UBEM5gIrGQwioC_i8Jjnp-aR1LFElENgw,16
1696
- django_codenerix_email-4.0.42.dist-info/RECORD,,
1692
+ django_codenerix_email-4.0.43.dist-info/LICENSE,sha256=IXMIpi75XsrJt1Sznt4EftT9c_4X0C9eqK4tHhH8H48,11339
1693
+ django_codenerix_email-4.0.43.dist-info/METADATA,sha256=_KErLKnL64iEgVwy1H97rBswYHI3lpxGzCZTaORjb28,2676
1694
+ django_codenerix_email-4.0.43.dist-info/WHEEL,sha256=z9j0xAa_JmUKMpmz72K0ZGALSM_n-wQVmGbleXx2VHg,110
1695
+ django_codenerix_email-4.0.43.dist-info/top_level.txt,sha256=lljSA0iKE_UBEM5gIrGQwioC_i8Jjnp-aR1LFElENgw,16
1696
+ django_codenerix_email-4.0.43.dist-info/RECORD,,