[Django] #29140: Exception sending EmailMessage with body=None

51 views
Skip to first unread message

Django

unread,
Feb 16, 2018, 6:24:32 PM2/16/18
to django-...@googlegroups.com
#29140: Exception sending EmailMessage with body=None
------------------------------------------+------------------------
Reporter: Alex Schokking | Owner: nobody
Type: Uncategorized | Status: new
Component: Core (Mail) | Version: 1.11
Severity: Normal | Keywords:
Triage Stage: Unreviewed | Has patch: 0
Needs documentation: 0 | Needs tests: 0
Patch needs improvement: 0 | Easy pickings: 1
UI/UX: 0 |
------------------------------------------+------------------------
This had been working fine on 1.9 but when we upgraded to 1.11 instantly
started hitting an exception when django tries to call splitlines on the
None body without checking if there's a value there to split on.

{{{
File "/usr/local/lib/python2.7/dist-
packages/django/core/mail/message.py", line 348, in send
return self.get_connection(fail_silently).send_messages([self])
File "/usr/local/lib/python2.7/dist-
packages/django/core/mail/backends/smtp.py", line 111, in send_messages
sent = self._send(message)
File "/usr/local/lib/python2.7/dist-
packages/django/core/mail/backends/smtp.py", line 125, in _send
message = email_message.message()
File "/usr/local/lib/python2.7/dist-
packages/django/core/mail/message.py", line 307, in message
msg = SafeMIMEText(self.body, self.content_subtype, encoding)
File "/usr/local/lib/python2.7/dist-
packages/django/core/mail/message.py", line 214, in __init__
MIMEText.__init__(self, _text, _subtype=_subtype, _charset=_charset)
File "/usr/lib/python2.7/email/mime/text.py", line 30, in __init__
self.set_payload(_text, _charset)
File "/usr/local/lib/python2.7/dist-
packages/django/core/mail/message.py", line 224, in set_payload
for l in payload.splitlines()
AttributeError: 'NoneType' object has no attribute 'splitlines'
}}}


We've hacked around it by passing in an empty string instead but would
probably be more elegant for this `has_long_lines` logic to check if
there's a value instead.

For context we're not passing in a body because we're attaching the
plaintext and html versions of the email as a SafeMIMEMultipart
attachment.

--
Ticket URL: <https://code.djangoproject.com/ticket/29140>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

Django

unread,
Feb 16, 2018, 6:53:48 PM2/16/18
to django-...@googlegroups.com
#29140: Exception sending EmailMessage with body=None
--------------------------------+--------------------------------------

Reporter: Alex Schokking | Owner: nobody
Type: Bug | Status: new

Component: Core (Mail) | Version: 1.11
Severity: Normal | Resolution:

Keywords: | Triage Stage: Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 1 | UI/UX: 0
--------------------------------+--------------------------------------
Changes (by Alex Schokking):

* type: Uncategorized => Bug


Old description:

New description:

This had been working fine on 1.9 but when we upgraded to 1.11 instantly

started hitting an exception when django tries to call splitlines() on the

--

--
Ticket URL: <https://code.djangoproject.com/ticket/29140#comment:1>

Django

unread,
Feb 18, 2018, 1:35:41 PM2/18/18
to django-...@googlegroups.com
#29140: Exception sending EmailMessage with body=None
--------------------------------+--------------------------------------

Reporter: Alex Schokking | Owner: nobody
Type: Bug | Status: new

Component: Core (Mail) | Version: 1.11
Severity: Normal | Resolution:

Keywords: | Triage Stage: Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 1 | UI/UX: 0
--------------------------------+--------------------------------------

Comment (by Williams Mendez):

I'd like to contribute to this ticket.

--
Ticket URL: <https://code.djangoproject.com/ticket/29140#comment:2>

Django

unread,
Feb 18, 2018, 1:59:56 PM2/18/18
to django-...@googlegroups.com
#29140: Exception sending EmailMessage with body=None
--------------------------------+--------------------------------------

Reporter: Alex Schokking | Owner: nobody
Type: Bug | Status: new

Component: Core (Mail) | Version: 1.11
Severity: Normal | Resolution:

Keywords: | Triage Stage: Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 1 | UI/UX: 0
--------------------------------+--------------------------------------

Comment (by Herbert Fortes):

Hi,

Can you show how do you call EmailMessage?

If body=None the AttributeError will change to - 'NonType' object has no
attribute 'encode' at some point. A long time ago.

My first hint is to set |self.body = body or ' ' (single_quotes_here)


Regards,
Herbert

--
Ticket URL: <https://code.djangoproject.com/ticket/29140#comment:3>

Django

unread,
Feb 19, 2018, 8:21:47 AM2/19/18
to django-...@googlegroups.com
#29140: Exception sending EmailMessage with body=None
-------------------------------------+-------------------------------------
Reporter: Alex Schokking | Owner: Williams
| Mendez
Type: Bug | Status: assigned

Component: Core (Mail) | Version: 1.11
Severity: Normal | Resolution:

Keywords: | Triage Stage:
| Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 1 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by Williams Mendez):

* status: new => assigned
* owner: nobody => Williams Mendez


--
Ticket URL: <https://code.djangoproject.com/ticket/29140#comment:4>

Django

unread,
Feb 19, 2018, 2:35:08 PM2/19/18
to django-...@googlegroups.com
#29140: Exception sending EmailMessage with body=None
-------------------------------------+-------------------------------------
Reporter: Alex Schokking | Owner: Williams
| Mendez
Type: Bug | Status: assigned
Component: Core (Mail) | Version: 1.11
Severity: Normal | Resolution:

Keywords: | Triage Stage:
| Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 1 | UI/UX: 0
-------------------------------------+-------------------------------------

Comment (by Herbert Fortes):

It is just a curiosity.

I got Django-1.9.13 put None in some tests.

I found one test that fails: test_send() line 625. Three times.

--
Ticket URL: <https://code.djangoproject.com/ticket/29140#comment:5>

Django

unread,
Feb 19, 2018, 3:02:06 PM2/19/18
to django-...@googlegroups.com
#29140: Exception sending EmailMessage with body=None
-------------------------------------+-------------------------------------
Reporter: Alex Schokking | Owner: Williams
| Mendez
Type: Bug | Status: assigned
Component: Core (Mail) | Version: 1.11
Severity: Normal | Resolution:

Keywords: | Triage Stage:
| Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 1 | UI/UX: 0
-------------------------------------+-------------------------------------

Comment (by Herbert Fortes):

Tests do not fail.

EmailMessage does not raises errors

I am not dealing with python2.7 right.

--
Ticket URL: <https://code.djangoproject.com/ticket/29140#comment:6>

Django

unread,
Feb 20, 2018, 9:42:35 AM2/20/18
to django-...@googlegroups.com
#29140: Exception sending EmailMessage with body=None
-------------------------------------+-------------------------------------
Reporter: Alex Schokking | Owner: Williams
| Mendez
Type: Bug | Status: assigned
Component: Core (Mail) | Version: 1.11
Severity: Normal | Resolution:
Keywords: | Triage Stage: Ready for
| checkin
Has patch: 1 | Needs documentation: 0

Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 1 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by Tim Graham):

* has_patch: 0 => 1
* stage: Unreviewed => Ready for checkin


Comment:

[https://github.com/django/django/pull/9707 PR]

--
Ticket URL: <https://code.djangoproject.com/ticket/29140#comment:7>

Django

unread,
Feb 20, 2018, 9:55:03 AM2/20/18
to django-...@googlegroups.com
#29140: Exception sending EmailMessage with body=None
-------------------------------------+-------------------------------------
Reporter: Alex Schokking | Owner: Williams
| Mendez
Type: Bug | Status: closed

Component: Core (Mail) | Version: 1.11
Severity: Normal | Resolution: fixed

Keywords: | Triage Stage: Ready for
| checkin
Has patch: 1 | Needs documentation: 0

Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 1 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by Tim Graham <timograham@…>):

* status: assigned => closed
* resolution: => fixed


Comment:

In [changeset:"2691ed7ba1a83c535acd4fe7f0864a279cec3c35" 2691ed7]:
{{{
#!CommitTicketReference repository=""
revision="2691ed7ba1a83c535acd4fe7f0864a279cec3c35"
Fixed #29140 -- Fixed EmailMessage crash when body is None.
}}}

--
Ticket URL: <https://code.djangoproject.com/ticket/29140#comment:8>

Django

unread,
Feb 20, 2018, 3:47:13 PM2/20/18
to django-...@googlegroups.com
#29140: Exception sending EmailMessage with body=None
-------------------------------------+-------------------------------------
Reporter: Alex Schokking | Owner: Williams
| Mendez
Type: Bug | Status: closed
Component: Core (Mail) | Version: 1.11
Severity: Normal | Resolution: fixed
Keywords: | Triage Stage: Ready for
| checkin
Has patch: 1 | Needs documentation: 0

Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 1 | UI/UX: 0
-------------------------------------+-------------------------------------

Comment (by Alex Schokking):

Replying to [comment:6 Herbert Fortes]:


> Tests do not fail.
>
> EmailMessage does not raises errors
>
> I am not dealing with python2.7 right.

We were using Python 2.7 on this project

--
Ticket URL: <https://code.djangoproject.com/ticket/29140#comment:9>

Reply all
Reply to author
Forward
0 new messages