94 lines
5 KiB
Diff
94 lines
5 KiB
Diff
Index: /Users/boxed/django/django/core/handlers/base.py
|
|
===================================================================
|
|
--- /Users/boxed/django/django/core/handlers/base.py (revision 10581)
|
|
+++ /Users/boxed/django/django/core/handlers/base.py (working copy)
|
|
@@ -154,13 +154,17 @@
|
|
return debug.technical_500_response(request, *exc_info)
|
|
|
|
# When DEBUG is False, send an error message to the admins.
|
|
+ from django.views.debug import ExceptionReporter
|
|
+ reporter = ExceptionReporter(request, *exc_info)
|
|
+ html = reporter.get_traceback_html()
|
|
+
|
|
subject = 'Error (%s IP): %s' % ((request.META.get('REMOTE_ADDR') in settings.INTERNAL_IPS and 'internal' or 'EXTERNAL'), request.path)
|
|
try:
|
|
request_repr = repr(request)
|
|
except:
|
|
request_repr = "Request repr() unavailable"
|
|
message = "%s\n\n%s" % (self._get_traceback(exc_info), request_repr)
|
|
- mail_admins(subject, message, fail_silently=True)
|
|
+ mail_admins(subject, message, fail_silently=True, html_message=html)
|
|
# Return an HttpResponse that displays a friendly error message.
|
|
callback, param_dict = resolver.resolve500()
|
|
return callback(request, **param_dict)
|
|
Index: /Users/boxed/django/django/core/mail.py
|
|
===================================================================
|
|
--- /Users/boxed/django/django/core/mail.py (revision 10581)
|
|
+++ /Users/boxed/django/django/core/mail.py (working copy)
|
|
@@ -368,13 +368,15 @@
|
|
for subject, message, sender, recipient in datatuple]
|
|
return connection.send_messages(messages)
|
|
|
|
-def mail_admins(subject, message, fail_silently=False):
|
|
+def mail_admins(subject, message, fail_silently=False, html_message=None):
|
|
"""Sends a message to the admins, as defined by the ADMINS setting."""
|
|
if not settings.ADMINS:
|
|
return
|
|
- EmailMessage(settings.EMAIL_SUBJECT_PREFIX + subject, message,
|
|
- settings.SERVER_EMAIL, [a[1] for a in settings.ADMINS]
|
|
- ).send(fail_silently=fail_silently)
|
|
+ from django.core.mail import EmailMultiAlternatives
|
|
+ msg = EmailMultiAlternatives(settings.EMAIL_SUBJECT_PREFIX + subject, message, settings.SERVER_EMAIL, [a[1] for a in settings.ADMINS])
|
|
+ if html_message:
|
|
+ msg.attach_alternative(html_message, "text/html")
|
|
+ msg.send(fail_silently=fail_silently)
|
|
|
|
def mail_managers(subject, message, fail_silently=False):
|
|
"""Sends a message to the managers, as defined by the MANAGERS setting."""
|
|
Index: /Users/boxed/django/django/core/handlers/base.py
|
|
===================================================================
|
|
--- /Users/boxed/django/django/core/handlers/base.py (revision 10581)
|
|
+++ /Users/boxed/django/django/core/handlers/base.py (working copy)
|
|
@@ -154,13 +154,17 @@
|
|
return debug.technical_500_response(request, *exc_info)
|
|
|
|
# When DEBUG is False, send an error message to the admins.
|
|
+ from django.views.debug import ExceptionReporter
|
|
+ reporter = ExceptionReporter(request, *exc_info)
|
|
+ html = reporter.get_traceback_html()
|
|
+
|
|
subject = 'Error (%s IP): %s' % ((request.META.get('REMOTE_ADDR') in settings.INTERNAL_IPS and 'internal' or 'EXTERNAL'), request.path)
|
|
try:
|
|
request_repr = repr(request)
|
|
except:
|
|
request_repr = "Request repr() unavailable"
|
|
message = "%s\n\n%s" % (self._get_traceback(exc_info), request_repr)
|
|
- mail_admins(subject, message, fail_silently=True)
|
|
+ mail_admins(subject, message, fail_silently=True, html_message=html)
|
|
# Return an HttpResponse that displays a friendly error message.
|
|
callback, param_dict = resolver.resolve500()
|
|
return callback(request, **param_dict)
|
|
Index: /Users/boxed/django/django/core/mail.py
|
|
===================================================================
|
|
--- /Users/boxed/django/django/core/mail.py (revision 10581)
|
|
+++ /Users/boxed/django/django/core/mail.py (working copy)
|
|
@@ -368,13 +368,15 @@
|
|
for subject, message, sender, recipient in datatuple]
|
|
return connection.send_messages(messages)
|
|
|
|
-def mail_admins(subject, message, fail_silently=False):
|
|
+def mail_admins(subject, message, fail_silently=False, html_message=None):
|
|
"""Sends a message to the admins, as defined by the ADMINS setting."""
|
|
if not settings.ADMINS:
|
|
return
|
|
- EmailMessage(settings.EMAIL_SUBJECT_PREFIX + subject, message,
|
|
- settings.SERVER_EMAIL, [a[1] for a in settings.ADMINS]
|
|
- ).send(fail_silently=fail_silently)
|
|
+ from django.core.mail import EmailMultiAlternatives
|
|
+ msg = EmailMultiAlternatives(settings.EMAIL_SUBJECT_PREFIX + subject, message, settings.SERVER_EMAIL, [a[1] for a in settings.ADMINS])
|
|
+ if html_message:
|
|
+ msg.attach_alternative(html_message, "text/html")
|
|
+ msg.send(fail_silently=fail_silently)
|
|
|
|
def mail_managers(subject, message, fail_silently=False):
|
|
"""Sends a message to the managers, as defined by the MANAGERS setting."""
|