2015-11-13 117 views
1

我寫這在終端測試在Django發送消息,但我有一個錯誤,我沒有找到解決辦法...:Django的:發送郵件失敗

from le_site.models import * 
import smtplib 
send_mail('Subject here', 'Here is the message.','[email protected]',['[email protected]'],fail_silently=False) 

的錯誤(異常) :

Traceback (most recent call last): 
File "<stdin>", line 1, in <module> 
File "/usr/local/lib/python2.7/dist-packages/django/core/mail/__init__.py", line 56, in send_mail 
fail_silently=fail_silently) 
File "/usr/local/lib/python2.7/dist-packages/django/core/mail/__init__.py", line 37, in get_connection 
klass = import_string(backend or settings.EMAIL_BACKEND) 
File "/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py", line 46, in __getattr__ 
self._setup(name) 
File "/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py", line 40, in _setup 
% (desc, ENVIRONMENT_VARIABLE)) 

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

SETTINGS.PY(Django的的):

BASE_DIR = os.path.dirname(os.path.dirname(__file__)) 
DEBUG = True 
TEMPLATE_DEBUG = True 
ALLOWED_HOSTS = [] 
#AUTHENTICATION_BACKENDS = ('backend.EmailAuthBackend',) 

INSTALLED_APPS = (
    'django.contrib.admin', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    'django.contrib.humanize', 
    'mysite', 
    'bootstrapform', 
) 

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.middleware.common.CommonMiddleware', 
    'django.middleware.csrf.CsrfViewMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 
    'django.contrib.messages.middleware.MessageMiddleware', 
    'django.middleware.clickjacking.XFrameOptionsMiddleware', 
) 

ROOT_URLCONF = 'mysite.urls' 
WSGI_APPLICATION = 'mysite.wsgi.application' 

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.sqlite3', 
     'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), 
    } 
} 

LANGUAGE_CODE = 'fr-FR' 
TIME_ZONE = 'Europe/Paris' 
USE_I18N = True 
USE_L10N = True 
USE_TZ = True 

STATIC_URL = '/static/' 

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "static"), 
) 

TEMPLATE_DIRS = (
    os.path.join(BASE_DIR, 'templates'), 
) 

MEDIA_ROOT = os.path.join(BASE_DIR, 'media') 
MEDIA_URL = '/media/' 
LOGIN_URL = '/mysite/' 

所以我瘦k與消息發送相匹配的值是好的,我忘記了什麼?

感謝的

回答

2

您還沒有配置的所有電子郵件設置,如果你只是測試的消息,可以使用Console backend代替併發送電子郵件到標準輸出。嘗試重寫默認EMAIL_BACKENDsettings.py

# EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' 
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' 

如果您在使用默認的後臺發送電子郵件的規劃,你不需要導入smtplib,對於Django提供內部django.core.mail輔助功能:

from django.core.mail import send_mail 

send_mail('Subject here', 'Here is the message.', '[email protected]', 
    ['[email protected]'], fail_silently=False) 

雖然,就像我之前說過的,你需要事先配置一些東西。請查看SMTP backend瞭解更多信息。

示例設置:

# Email settings 
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' 
EMAIL_HOST = 'smtp.gmail.com' 
EMAIL_HOST_USER = '[email protected]' 
EMAIL_HOST_PASSWORD = 'yourpassword' 
EMAIL_PORT = 587 
EMAIL_USE_TLS = True 
EMAIL_SUBJECT_PREFIX = '[Test mail]' 
+0

我會嘗試,2分鐘:) – Zoulou

+0

我在我的設置中添加了這一行,然後使用相同的命令重新測試了這些消息,我遇到了同樣的錯誤...並且在將來我希望使用我的網站中的消息! – Zoulou

+0

@Zoulou看到我的更新 –

0

如果你是一個主機上啓用了小南國,好比說媒體寺,我會爲你節省一些咒罵,頭髮等

有一個系統級的SMTP這些機器上的限制配置。進入WHM並找到並禁用它。像魔術一樣你的SMTP的作品。

當SMTP限制被啓用時,您將得到535身份驗證錯誤。