NewsBlur/utils/django_extensions/management/commands/mail_debug.py
2009-07-22 04:24:24 +00:00

41 lines
1.2 KiB
Python

from django.core.management.base import BaseCommand
import sys
import smtpd
import asyncore
class Command(BaseCommand):
help = "Starts a test mail server for development."
args = '[optional port number or ippaddr:port]'
requires_model_validation = False
def handle(self, addrport='', *args, **options):
if args:
raise CommandError('Usage is runserver %s' % self.args)
if not addrport:
addr = ''
port = '1025'
else:
try:
addr, port = addrport.split(':')
except ValueError:
addr, port = '', addrport
if not addr:
addr = '127.0.0.1'
if not port.isdigit():
raise CommandError("%r is not a valid port number." % port)
else:
port = int(port)
quit_command = (sys.platform == 'win32') and 'CTRL-BREAK' or 'CONTROL-C'
def inner_run():
print "Now accepting mail at %s:%s" % (addr, port)
server = smtpd.DebuggingServer((addr,port), None)
asyncore.loop()
try:
inner_run()
except KeyboardInterrupt:
pass