Skip to content

Fix empty email destination at cronjob#650

Open
mchehab wants to merge 4 commits into
getpatchwork:mainfrom
mchehab:fix_empty_email_fields
Open

Fix empty email destination at cronjob#650
mchehab wants to merge 4 commits into
getpatchwork:mainfrom
mchehab:fix_empty_email_fields

Conversation

@mchehab
Copy link
Copy Markdown
Contributor

@mchehab mchehab commented Jun 6, 2026

If recipient is not filled or is invalid, email submission cronjob crashes with:

Traceback (most recent call last):
File "/usr/local/patchwork/./manage.py", line 17, in
execute_from_command_line(sys.argv)
File "/usr/lib/python3/dist-packages/django/core/management/init.py", line 419, in execute_from_command_line
utility.execute()
File "/usr/lib/python3/dist-packages/django/core/management/init.py", line 413, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/usr/lib/python3/dist-packages/django/core/management/base.py", line 354, in run_from_argv
self.execute(*args, **cmd_options)
File "/usr/lib/python3/dist-packages/django/core/management/base.py", line 398, in execute
output = self.handle(*args, **options)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/patchwork/patchwork/management/commands/cron.py", line 19, in handle
errors = send_notifications()
^^^^^^^^^^^^^^^^^^^^
File "/usr/local/patchwork/patchwork/notifications.py", line 84, in send_notifications
message.send()
File "/usr/lib/python3/dist-packages/django/core/mail/message.py", line 284, in send
return self.get_connection(fail_silently).send_messages([self])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/django/core/mail/backends/smtp.py", line 109, in send_messages
sent = self._send(message)
^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/django/core/mail/backends/smtp.py", line 122, in _send
recipients = [sanitize_address(addr, encoding) for addr in email_message.recipients()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/django/core/mail/backends/smtp.py", line 122, in
recipients = [sanitize_address(addr, encoding) for addr in email_message.recipients()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/django/core/mail/message.py", line 99, in sanitize_address
address_parts = nm + localpart + domain
~~~^~~~~~~~~~~
TypeError: can only concatenate str (not "NoneType") to str

As there's no point trying to send a notification to an invalid e-mail, just drops it.

stephenfin and others added 4 commits October 31, 2024 22:03
This will need to be part of our release procedure going forward.

Signed-off-by: Stephen Finucane <stephen@that.guru>
Preformatted content must not be indented
because any space is kept in the output,
making the content wrongly indented.

When aligning message headers to the left,
the new HTML code has been indented
including some preformatted content indented with two spaces.

The fix is to remove the indent of the content.

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Fixes: fe34ab2 ("patch-detail: left align message headers")
Reviewed-by: Robin Jarry <robin@jarry.cc>
Reviewed-by: Stephen Finucane <stephen@that.guru>
(cherry picked from commit 13bbc0d)
Signed-off-by: Stephen Finucane <stephen@that.guru>
On Django 3:3.2.19, if recipient is not filled or is invalid, cron
job fails with:

Traceback (most recent call last):
  File "/usr/local/patchwork/./manage.py", line 17, in <module>
    execute_from_command_line(sys.argv)
  File "/usr/lib/python3/dist-packages/django/core/management/__init__.py", line 419, in execute_from_command_line
    utility.execute()
  File "/usr/lib/python3/dist-packages/django/core/management/__init__.py", line 413, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/usr/lib/python3/dist-packages/django/core/management/base.py", line 354, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/usr/lib/python3/dist-packages/django/core/management/base.py", line 398, in execute
    output = self.handle(*args, **options)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/patchwork/patchwork/management/commands/cron.py", line 19, in handle
    errors = send_notifications()
             ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/patchwork/patchwork/notifications.py", line 84, in send_notifications
    message.send()
  File "/usr/lib/python3/dist-packages/django/core/mail/message.py", line 284, in send
    return self.get_connection(fail_silently).send_messages([self])
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/django/core/mail/backends/smtp.py", line 109, in send_messages
    sent = self._send(message)
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/django/core/mail/backends/smtp.py", line 122, in _send
    recipients = [sanitize_address(addr, encoding) for addr in email_message.recipients()]
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/django/core/mail/backends/smtp.py", line 122, in <listcomp>
    recipients = [sanitize_address(addr, encoding) for addr in email_message.recipients()]
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/django/core/mail/message.py", line 99, in sanitize_address
    address_parts = nm + localpart + domain
                    ~~~^~~~~~~~~~~
TypeError: can only concatenate str (not "NoneType") to str

As there's no point trying to send a notification to an invalid
e-mail, just drops it.

Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
@mchehab mchehab changed the title Fix empty email fields Fix empty email destination at cronjob Jun 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants