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:
parent
55f12f8709
commit
d898ba1bec
1
AUTHORS
1
AUTHORS
@ -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>
|
||||||
|
20
django/core/management/commands/sendtestemail.py
Normal file
20
django/core/management/commands/sendtestemail.py
Normal 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,
|
||||||
|
)
|
@ -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
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
@ -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
|
||||||
^^^^^^
|
^^^^^^
|
||||||
|
@ -682,6 +682,7 @@ screenshots
|
|||||||
sdist
|
sdist
|
||||||
semimajor
|
semimajor
|
||||||
semiminor
|
semiminor
|
||||||
|
sendtestemail
|
||||||
serializability
|
serializability
|
||||||
serializable
|
serializable
|
||||||
serializer
|
serializer
|
||||||
|
43
tests/mail/test_sendtestemail.py
Normal file
43
tests/mail/test_sendtestemail.py
Normal 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")
|
Loading…
x
Reference in New Issue
Block a user