I recently installed(5.0.5) and upgraded(6.0.2) Review Board. I am testing out email service but getting error once review is updated. Error below.
UnicodeDecodeError at /api/review-requests/3/reviews/
'ascii' codec can't decode byte 0xc3 in position 7622: ordinal not in range(128)
Request Method: POST
Request URL:
http://10.17.17.161/api/review-requests/3/reviews/Django Version: 3.2.25
Python Executable: /usr/bin/python3
Python Version: 3.10.12
Python Path: ['/var/www/
10.17.17.161/conf', '/var/www/
10.17.17.161/venv/lib/python3.10/site-packages', '/usr/lib/python310.zip', '/usr/lib/python3.10', '/usr/lib/python3.10/lib-dynload', '/usr/local/lib/python3.10/dist-packages', '/usr/lib/python3/dist-packages']
Server time: Tue, 23 Apr 2024 15:40:30 +0000
Installed Applications:
['corsheaders',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.messages',
'django.contrib.sites',
'django.contrib.sessions',
'django.contrib.staticfiles',
'djblets',
'djblets.avatars',
'djblets.configforms',
'djblets.datagrid',
'djblets.extensions',
'djblets.features',
'djblets.feedview',
'djblets.forms',
'djblets.gravatars',
'djblets.integrations',
'djblets.log',
'djblets.pipeline',
'djblets.privacy',
'djblets.recaptcha',
'djblets.siteconfig',
'djblets.util',
'haystack',
'oauth2_provider',
'pipeline',
'reviewboard',
'reviewboard.accounts',
'reviewboard.actions',
'reviewboard.admin',
'reviewboard.attachments',
'reviewboard.avatars',
'reviewboard.changedescs',
'reviewboard.diffviewer',
'reviewboard.extensions',
'reviewboard.hostingsvcs',
'reviewboard.integrations',
'reviewboard.notifications',
'reviewboard.oauth',
'reviewboard.reviews',
'reviewboard.scmtools',
'reviewboard.site',
'reviewboard.webapi',
'django_evolution',
'rbintegrations']
Installed Middleware:
['django.middleware.gzip.GZipMiddleware',
'reviewboard.admin.middleware.init_review_board_middleware',
'corsheaders.middleware.CorsMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.http.ConditionalGetMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'djblets.siteconfig.middleware.SettingsMiddleware',
'reviewboard.admin.middleware.load_settings_middleware',
'djblets.extensions.middleware.ExtensionsMiddleware',
'djblets.integrations.middleware.IntegrationsMiddleware',
'djblets.log.middleware.LoggingMiddleware',
'reviewboard.accounts.middleware.timezone_middleware',
'reviewboard.accounts.middleware.update_last_login_middleware',
'reviewboard.admin.middleware.check_updates_required_middleware',
'reviewboard.accounts.middleware.x509_auth_middleware',
'reviewboard.site.middleware.LocalSiteMiddleware',
'djblets.extensions.middleware.ExtensionsMiddlewareRunner',
'reviewboard.admin.middleware.ExtraExceptionInfoMiddleware']
Traceback (most recent call last):
File "/usr/local/lib/python3.10/dist-packages/django/core/handlers/exception.py", line 47, in inner
response = get_response(request)
File "/usr/local/lib/python3.10/dist-packages/django/core/handlers/base.py", line 181, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/usr/local/lib/python3.10/dist-packages/django/views/decorators/vary.py", line 20, in inner_func
response = func(*args, **kwargs)
File "/usr/local/lib/python3.10/dist-packages/djblets/webapi/resources/base.py", line 650, in __call__
result = self.call_method_view(
File "/usr/local/lib/python3.10/dist-packages/reviewboard/webapi/base.py", line 348, in call_method_view
return super(WebAPIResource, self).call_method_view(
File "/usr/local/lib/python3.10/dist-packages/djblets/webapi/resources/mixins/api_tokens.py", line 62, in call_method_view
return super(ResourceAPITokenMixin, self).call_method_view(
File "/usr/local/lib/python3.10/dist-packages/djblets/webapi/resources/mixins/oauth2_tokens.py", line 99, in call_method_view
return super(ResourceOAuth2TokenMixin, self).call_method_view(
File "/usr/local/lib/python3.10/dist-packages/djblets/webapi/resources/base.py", line 941, in call_method_view
return view(request, *args, **kwargs)
File "/usr/local/lib/python3.10/dist-packages/djblets/webapi/resources/base.py", line 1123, in post
return self.create(request,
File "/usr/local/lib/python3.10/dist-packages/djblets/webapi/decorators.py", line 156, in _call
return view_func(*args, **kwargs)
File "/usr/local/lib/python3.10/dist-packages/reviewboard/webapi/decorators.py", line 165, in _check
return view_func(*args, **kwargs)
File "/usr/local/lib/python3.10/dist-packages/djblets/webapi/decorators.py", line 156, in _call
return view_func(*args, **kwargs)
File "/usr/local/lib/python3.10/dist-packages/djblets/webapi/decorators.py", line 177, in _checklogin
return view_func(*args, **kwargs)
File "/usr/local/lib/python3.10/dist-packages/djblets/webapi/decorators.py", line 156, in _call
return view_func(*args, **kwargs)
File "/usr/local/lib/python3.10/dist-packages/djblets/webapi/decorators.py", line 156, in _call
return view_func(*args, **kwargs)
File "/usr/local/lib/python3.10/dist-packages/djblets/webapi/decorators.py", line 323, in _validate
return view_func(*args, **new_kwargs)
File "/usr/local/lib/python3.10/dist-packages/reviewboard/webapi/resources/base_review.py", line 257, in create
result = self.update_review(request, review, *args, **kwargs)
File "/usr/local/lib/python3.10/dist-packages/reviewboard/webapi/resources/review.py", line 121, in update_review
return super(ReviewResource, self).update_review(
File "/usr/local/lib/python3.10/dist-packages/reviewboard/webapi/resources/base_review.py", line 389, in update_review
review.publish(user=request.user,
File "/usr/local/lib/python3.10/dist-packages/reviewboard/reviews/models/review.py", line 520, in publish
review_published.send(sender=self.__class__,
File "/usr/local/lib/python3.10/dist-packages/django/dispatch/dispatcher.py", line 180, in send
return [
File "/usr/local/lib/python3.10/dist-packages/django/dispatch/dispatcher.py", line 181, in <listcomp>
(receiver, receiver(signal=self, sender=sender, **named))
File "/usr/local/lib/python3.10/dist-packages/reviewboard/notifications/email/signal_handlers.py", line 155, in send_review_published_mail
message, sent = send_email(prepare_review_published_mail,
File "/usr/local/lib/python3.10/dist-packages/reviewboard/notifications/email/utils.py", line 330, in send_email
message = email_builder(**kwargs)
File "/usr/local/lib/python3.10/dist-packages/reviewboard/notifications/email/message.py", line 429, in prepare_review_published_mail
return prepare_base_review_request_mail(
File "/usr/local/lib/python3.10/dist-packages/reviewboard/notifications/email/message.py", line 244, in prepare_base_review_request_mail
return EmailMessage(subject=subject.strip(),
File "/usr/local/lib/python3.10/dist-packages/reviewboard/notifications/email/message.py", line 70, in __init__
super(EmailMessage, self).__init__(
File "/usr/local/lib/python3.10/dist-packages/housekeeping/functions.py", line 411, in _call
return func(*new_args, **new_kwargs)
File "/usr/local/lib/python3.10/dist-packages/djblets/mail/message.py", line 305, in __init__
not is_email_allowed_by_dmarc(parsed_from_email))):
File "/usr/local/lib/python3.10/dist-packages/djblets/mail/dmarc.py", line 383, in is_email_allowed_by_dmarc
dmarc_record = get_dmarc_record(hostname)
File "/usr/local/lib/python3.10/dist-packages/djblets/mail/dmarc.py", line 342, in get_dmarc_record
psl = PublicSuffixList(fp)
File "/usr/local/lib/python3.10/dist-packages/publicsuffix/__init__.py", line 54, in __init__
root = self._build_structure(input_file)
File "/usr/local/lib/python3.10/dist-packages/publicsuffix/__init__.py", line 98, in _build_structure
for line in fp:
File "/usr/lib/python3.10/encodings/ascii.py", line 26, in decode
return codecs.ascii_decode(input, self.errors)[0]
Exception Type: UnicodeDecodeError at /api/review-requests/3/reviews/
Exception Value: 'ascii' codec can't decode byte 0xc3 in position 7622: ordinal not in range(128)