example email_host correo python django smtp

python - email_host - Configurado incorrectamente: configuración solicitada DEFAULT_INDEX_TABLESPACE, pero la configuración no está configurada



send correo django (1)

Estoy tratando de hacer un servidor en vivo SMTP como una aplicación separada en django. Cada vez que intento ejecutar el archivo smtp python smtp.py para escuchar los mensajes entrantes y almacenarlos en los modelos, aparece el error ImproperlyConfigured.

smtp.py

import os import smtpd import asyncore import datetime from models import IncomingEmail from email.parser import Parser class MessageServer(): def __call__(self, peer, mailfrom, recipients, data): email = Parser().parsestr(data) incomingDb = IncomingEmail( sender=mailfrom, recipient=recipients, message=data, subject=email[''subject''], recevied=datetime.datetime.now() ) incomingDb.save() class customSMTPServer(smtpd.SMTPServer): process_message = MessageServer() if __name__ == "__main__": os.environ.setdefault("DJANGO_SETTINGS_MODULE", "hello.settings") server = customSMTPServer((''localhost'', 1025), None) print "Started listening at port 1025" try: asyncore.loop() except KeyboardInterrupt: server.close()

La estructura del proyecto:

hello/ manage.py hello/ __init__.py settings.py urls.py wsgi.py smtp/ smtp.py models.py __init__.py api/ admin.py apps.py urls.py views.py

El error:

django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE, but settings are not configured. You must either define the environ ment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.


Parece que está obteniendo ese error porque a DB engin le faltan algunas configuraciones importantes. ¿Qué pasa si editas tu código así?

import sys, os sys.path.append(''/path/to/your/app'') os.environ[''DJANGO_SETTINGS_MODULE''] = ''hello.settings'' from django.conf import settings print "Started listening at port 1025" ...

O bien, otra forma es intentar mover os.environ.setdefault("DJANGO_SETTINGS_MODULE", "hello.settings") en la parte superior de tu archivo (pero después de importar el sistema os , por supuesto) Otro truco un poco sucio es:

if __name__ == "__main__": from django.core.management import execute_from_command_line execute_from_command_line(sys.argv)

Lo siguiente que podrías intentar:

$ ./manage.py shell ... >>> execfile(''your_script.py'')

Además, ¿qué línea arroja y excepción?