1
0
mirror of https://github.com/django/django.git synced 2025-10-31 09:41:08 +00:00

[1.6.x] Changed console and filebackend to use msg.as_bytes to output the data as it would get send via smtp.

Backport of c988745cca from master.
This commit is contained in:
Florian Apolloner
2013-12-30 23:45:43 +01:00
parent 7c674dd1f1
commit d18f99dfc7
3 changed files with 37 additions and 16 deletions

View File

@@ -5,6 +5,7 @@ import sys
import threading
from django.core.mail.backends.base import BaseEmailBackend
from django.utils import six
class EmailBackend(BaseEmailBackend):
def __init__(self, *args, **kwargs):
@@ -12,6 +13,14 @@ class EmailBackend(BaseEmailBackend):
self._lock = threading.RLock()
super(EmailBackend, self).__init__(*args, **kwargs)
def write_message(self, message):
msg = message.message().as_bytes()
if six.PY3:
msg = msg.decode()
self.stream.write('%s\n' % msg)
self.stream.write('-' * 79)
self.stream.write('\n')
def send_messages(self, email_messages):
"""Write all messages to the stream in a thread-safe way."""
if not email_messages:
@@ -20,9 +29,7 @@ class EmailBackend(BaseEmailBackend):
try:
stream_created = self.open()
for message in email_messages:
self.stream.write('%s\n' % message.message().as_string())
self.stream.write('-' * 79)
self.stream.write('\n')
self.write_message(message)
self.stream.flush() # flush after each message
if stream_created:
self.close()

View File

@@ -37,6 +37,11 @@ class EmailBackend(ConsoleEmailBackend):
kwargs['stream'] = None
super(EmailBackend, self).__init__(*args, **kwargs)
def write_message(self, message):
self.stream.write(message.message().as_bytes() + b'\n')
self.stream.write(b'-' * 79)
self.stream.write(b'\n')
def _get_filename(self):
"""Return a unique file name."""
if self._fname is None:
@@ -47,7 +52,7 @@ class EmailBackend(ConsoleEmailBackend):
def open(self):
if self.stream is None:
self.stream = open(self._get_filename(), 'a')
self.stream = open(self._get_filename(), 'ab')
return True
return False