#13682: Email attachments not support russian unicode symbols in filename and
body
---------------------------------------+------------------------------------
Reporter: satels | Owner: nobody
Status: new | Milestone:
Component: django.core.mail | Version: 1.2
Resolution: | Keywords: mail, unicode
Stage: Unreviewed | Has_patch: 0
Needs_docs: 0 | Needs_tests: 0
Needs_better_patch: 0 |
---------------------------------------+------------------------------------
Old description:
> {{{
> #encoding:utf8
> from django import test
> from django.core import mail
>
> def send_mail(subject='', body='', from_email=None, to=None,
> connection=None, bcc=None, attachments=None, headers=None,
> netangels_headers=None, fail_silently=True,
> autosubmitted=False):
>
> email = mail.EmailMessage(subject=subject,
> body=body,
> from_email=from_email,
> to=to,
> bcc=bcc,
> connection=connection,
> attachments=attachments,
> headers=headers,
> netangels_headers=netangels_headers,
> autosubmitted=autosubmitted)
> # Отправка сообщения
> email.send(fail_silently=fail_silently)
>
> class MailBaseFunctionalTest(test.TestCase):
>
> def setUp(self):
> self.subject = u'Это тестовый заголовок'
> self.body = u"""
> Это тестовое тело сообщения"""
> self.from_email = u'Это тестовый отправитель <i...@netangels>'
> self.to = [
> u'Это первый тестовый получатель <[email protected]>'
> '[email protected]'
> ]
> self.bcc = [
> '[email protected]'
> ]
> self.attachments = [
> (u'Это файл 1.rtf', u"Содержание первого файла",
> 'text/richtext'),
> (u'Это файл 2.doc', u"Содержание второго файла\n",
> 'application/msword')
> ]
> self.autosubmitted = True
> self.headers = {
> 'Test-Header-1': "It test header 1"
> }
> self.netangels_headers = {
> 'Test-Header-2': "It test header 2"
> }
> self.connection = mail.get_connection(
> backend='django.core.mail.backends.filebased.EmailBackend')
> send_mail(subject=self.subject,
> body=self.body,
> from_email=self.from_email,
> to=self.to,
> connection=self.connection,
> bcc=self.bcc,
> attachments=self.attachments,
> headers=self.headers,
> netangels_headers=self.netangels_headers,
> fail_silently=False,
> autosubmitted=self.autosubmitted)
> }}}
>
> -- return error
> ======================================================================
> ERROR: testBaseFunctional
> (netangels.engine.tests.mail.MailBaseFunctionalTest)
> ----------------------------------------------------------------------
> Traceback (most recent call last):
> File "/home/ivan/workspace/ivan_panel/netangels/engine/tests/mail.py",
> line 43, in setUp
> autosubmitted=self.autosubmitted)
> File "/home/ivan/workspace/ivan_panel/netangels/engine/mail.py", line
> 68, in send_mail
> email.send(fail_silently=fail_silently)
> File "/usr/local/lib/python2.6/dist-
> packages/django/core/mail/message.py", line 175, in send
> return self.get_connection(fail_silently).send_messages([self])
> File "/usr/local/lib/python2.6/dist-
> packages/django/core/mail/backends/console.py", line 26, in send_messages
> self.stream.write('%s\n' % message.message().as_string())
> File "/usr/local/lib/python2.6/dist-
> packages/django/core/mail/message.py", line 144, in message
> msg = self._create_message(msg)
> File "/usr/local/lib/python2.6/dist-
> packages/django/core/mail/message.py", line 199, in _create_message
> return self._create_attachments(msg)
> File "/usr/local/lib/python2.6/dist-
> packages/django/core/mail/message.py", line 212, in _create_attachments
> msg.attach(self._create_attachment(*attachment))
> File "/usr/local/lib/python2.6/dist-
> packages/django/core/mail/message.py", line 239, in _create_attachment
> attachment = self._create_mime_attachment(content, mimetype)
> File "/usr/local/lib/python2.6/dist-
> packages/django/core/mail/message.py", line 227, in
> _create_mime_attachment
> Encoders.encode_base64(attachment)
> File "/usr/lib/python2.6/email/encoders.py", line 45, in encode_base64
> encdata = _bencode(orig)
> File "/usr/lib/python2.6/email/encoders.py", line 32, in _bencode
> value = base64.encodestring(s)
> File "/usr/lib/python2.6/base64.py", line 315, in encodestring
> pieces.append(binascii.b2a_base64(chunk))
> UnicodeEncodeError: 'ascii' codec can't encode characters in position
> 0-9: ordinal not in range(128)
>
> ----------------------------------------------------------------------
New description:
{{{
#encoding:utf8
from django import test
from django.core import mail
def send_mail(subject='', body='', from_email=None, to=None,
connection=None, bcc=None, attachments=None, headers=None,
netangels_headers=None, fail_silently=True,
autosubmitted=False):
email = mail.EmailMessage(subject=subject,
body=body,
from_email=from_email,
to=to,
bcc=bcc,
connection=connection,
attachments=attachments,
headers=headers,
netangels_headers=netangels_headers,
autosubmitted=autosubmitted)
# Отправка сообщения
email.send(fail_silently=fail_silently)
class MailBaseFunctionalTest(test.TestCase):
def setUp(self):
self.subject = u'Это тестовый заголовок'
self.body = u"""
Это тестовое тело сообщения"""
self.from_email = u'Это тестовый отправитель <i...@netangels>'
self.to = [
u'Это первый тестовый получатель <[email protected]>'
'[email protected]'
]
self.bcc = [
'[email protected]'
]
self.attachments = [
(u'Это файл 1.rtf', u"Содержание первого файла",
'text/richtext'),
(u'Это файл 2.doc', u"Содержание второго файла\n",
'application/msword')
]
self.autosubmitted = True
self.headers = {
'Test-Header-1': "It test header 1"
}
self.netangels_headers = {
'Test-Header-2': "It test header 2"
}
self.connection = mail.get_connection(
backend='django.core.mail.backends.filebased.EmailBackend')
send_mail(subject=self.subject,
body=self.body,
from_email=self.from_email,
to=self.to,
connection=self.connection,
bcc=self.bcc,
attachments=self.attachments,
headers=self.headers,
netangels_headers=self.netangels_headers,
fail_silently=False,
autosubmitted=self.autosubmitted)
}}}
-- return error
{{{
======================================================================
ERROR: testBaseFunctional
(netangels.engine.tests.mail.MailBaseFunctionalTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/ivan/workspace/ivan_panel/netangels/engine/tests/mail.py",
line 43, in setUp
autosubmitted=self.autosubmitted)
File "/home/ivan/workspace/ivan_panel/netangels/engine/mail.py", line
68, in send_mail
email.send(fail_silently=fail_silently)
File "/usr/local/lib/python2.6/dist-
packages/django/core/mail/message.py", line 175, in send
return self.get_connection(fail_silently).send_messages([self])
File "/usr/local/lib/python2.6/dist-
packages/django/core/mail/backends/console.py", line 26, in send_messages
self.stream.write('%s\n' % message.message().as_string())
File "/usr/local/lib/python2.6/dist-
packages/django/core/mail/message.py", line 144, in message
msg = self._create_message(msg)
File "/usr/local/lib/python2.6/dist-
packages/django/core/mail/message.py", line 199, in _create_message
return self._create_attachments(msg)
File "/usr/local/lib/python2.6/dist-
packages/django/core/mail/message.py", line 212, in _create_attachments
msg.attach(self._create_attachment(*attachment))
File "/usr/local/lib/python2.6/dist-
packages/django/core/mail/message.py", line 239, in _create_attachment
attachment = self._create_mime_attachment(content, mimetype)
File "/usr/local/lib/python2.6/dist-
packages/django/core/mail/message.py", line 227, in
_create_mime_attachment
Encoders.encode_base64(attachment)
File "/usr/lib/python2.6/email/encoders.py", line 45, in encode_base64
encdata = _bencode(orig)
File "/usr/lib/python2.6/email/encoders.py", line 32, in _bencode
value = base64.encodestring(s)
File "/usr/lib/python2.6/base64.py", line 315, in encodestring
pieces.append(binascii.b2a_base64(chunk))
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-9:
ordinal not in range(128)
----------------------------------------------------------------------
}}}
Comment (by kmtracey):
Fixed traceback formatting.
--
Ticket URL: <http://code.djangoproject.com/ticket/13682#comment:2>
Django <http://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/django-updates?hl=en.