1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
|
mail_debug
==========
:synopsis: Starts a mail server which echos out the contents of the email
instead of sending it.
Installation
------------
This command requires installation of `aiosmtpd`_. You can get it from PyPI with::
pip install aiosmtpd
.. _`aiosmtpd`: https://github.com/aio-libs/aiosmtpd
Usage
-----
You can start the mail server with the command::
$ python manage.py mail_debug
Now accepting mail at 127.0.0.1:1025 -- use CONTROL-C to quit
By default, it will start a process listening on port 1025 on local host.
Assuming your Django settings ``EMAIL_HOST`` and ``EMAIL_PORT`` are configured to
point to the same IP and port, in another terminal, open the Django shell and run
.. code-block:: python
from django.core.mail import send_mail
send_mail(
"Subject here",
"Here is the message.",
"from@example.com",
["to@example.com"],
fail_silently=False,
)
If you go back to the terminal with the ``mail_debug`` command is running, you
should see the email coming through::
---------- MESSAGE FOLLOWS ----------
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Subject: Subject here
From: from@example.com
To: to@example.com
Date: Sun, 19 Jan 2025 12:21:47 -0000
Message-ID:
<173728930732.90349.12519699486821706188@1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa>
X-Peer: 127.0.0.1
Here is the message.
------------ END MESSAGE ------------
Arguments
---------
You can specify a different port by passing it as argument to the command::
$ python manage.py mail_debug 1026
Now accepting mail at 127.0.0.1:1026 -- use CONTROL-C to quit
You can also pass the host + port separated by a colon, e.g.::
$ python manage.py mail_debug 192.168.1.1:1234
Now accepting mail at 192.168.1.1:1234 -- use CONTROL-C to quit
Options
-------
The command also accepts the following options:
* ``--output``: Specifies an output file to send a copy of all messages (not flushed immediately).
* ``--use-settings``: Uses EMAIL_HOST and HOST_PORT from Django settings. This option is ignored if the address
or port is passed as an argument
|