1
0
mirror of https://github.com/django/django.git synced 2025-06-04 02:59:13 +00:00

Fixed #24419 -- Added sendtestemail management command

This commit is contained in:
Loek van Gent 2015-03-07 13:55:59 +01:00 committed by Tim Graham
parent 55f12f8709
commit d898ba1bec
6 changed files with 79 additions and 1 deletions

View File

@ -408,6 +408,7 @@ answer newbie questions, and generally made Django that much better:
lerouxb@gmail.com lerouxb@gmail.com
Liang Feng <hutuworm@gmail.com> Liang Feng <hutuworm@gmail.com>
limodou limodou
Loek van Gent <loek@barakken.nl>
Loïc Bistuer <loic.bistuer@sixmedia.com> Loïc Bistuer <loic.bistuer@sixmedia.com>
Lowe Thiderman <lowe.thiderman@gmail.com> Lowe Thiderman <lowe.thiderman@gmail.com>
Luan Pablo <luanpab@gmail.com> Luan Pablo <luanpab@gmail.com>

View File

@ -0,0 +1,20 @@
import datetime
import socket
from django.core.mail import send_mail
from django.core.management.base import BaseCommand, CommandError
class Command(BaseCommand):
help = "Sends a test email to the email addresses specified as arguments."
args = "<email1 email2 ...>"
def handle(self, *args, **kwargs):
if not args:
raise CommandError('You must provide at least one destination email.')
send_mail(
subject='Test email from %s on %s' % (socket.gethostname(), datetime.datetime.now()),
message="If you\'re reading this, it was successful.",
from_email=None,
recipient_list=args,
)

View File

@ -875,6 +875,18 @@ By default, the development server doesn't serve any static files for your site
you want to configure Django to serve static media, read you want to configure Django to serve static media, read
:doc:`/howto/static-files/index`. :doc:`/howto/static-files/index`.
sendtestemail
-------------
.. django-admin:: sendtestemail
.. versionadded:: 1.9
Sends a test email (to confirm email sending through Django is working) to the
recipient(s) specified. For example::
django-admin sendtestemail foo@example.com bar@example.com
shell shell
----- -----

View File

@ -146,7 +146,8 @@ Internationalization
Management Commands Management Commands
^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^
* ... * The new :djadmin:`sendtestemail` command lets you send a test email to
easily confirm that email sending through Django is working.
Models Models
^^^^^^ ^^^^^^

View File

@ -682,6 +682,7 @@ screenshots
sdist sdist
semimajor semimajor
semiminor semiminor
sendtestemail
serializability serializability
serializable serializable
serializer serializer

View File

@ -0,0 +1,43 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.core import mail
from django.core.management import call_command
from django.core.management.base import CommandError
from django.test import SimpleTestCase
from django.utils.six import StringIO
class SendTestEmailManagementCommand(SimpleTestCase):
"""
Test the sending of a test email using the `sendtestemail` command.
"""
def test_send_test_email(self):
"""
The mail is sent with the correct subject and recipient.
"""
recipient = "joe@somewhere.org"
call_command("sendtestemail", recipient)
self.assertEqual(len(mail.outbox), 1)
mail_message = mail.outbox[0]
self.assertEqual(mail_message.subject[0:15], 'Test email from')
self.assertEqual(mail_message.recipients(), [recipient])
def test_send_test_email_with_multiple_addresses(self):
"""
The mail may be sent with multiple recipients.
"""
recipients = ["joe@somewhere.org", "jane@elsewhere.net"]
call_command("sendtestemail", recipients[0], recipients[1])
self.assertEqual(len(mail.outbox), 1)
mail_message = mail.outbox[0]
self.assertEqual(mail_message.subject[0:15], 'Test email from')
self.assertEqual(mail_message.recipients(), recipients)
def test_send_test_email_missing_recipient(self):
"""
A CommandError is raised if no recipients are specified.
"""
with self.assertRaisesMessage(CommandError, 'You must provide at least one destination email'):
call_command("sendtestemail")