这是我的设置。py:
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com' # mail service smtp
EMAIL_HOST_USER = 'xx@xx.com' # email id
EMAIL_HOST_PASSWORD = 'sdjlfkjdskjfdsjkjfkds' #password
EMAIL_PORT = 587
EMAIL_USE_TLS = True
DEFAULT_FROM_EMAIL = 'xx@xx.com'
我正在发送密码重置电子邮件 它在localhost上工作正常,但在生产服务器上作为发件人,我得到的是webmaster @ localhost
我该怎么办?
这是我的urls.py
url(r'^password_reset/$', auth_views.PasswordResetView.as_view(
template_name='accounts/password_reset.html',
email_template_name = 'accounts/email/password_reset.html',
html_email_template_name = 'accounts/email/password_reset.html',
subject_template_name = 'accounts/email/password_reset_subject.html'),
答案 0 :(得分:2)
首先,我想解释为什么您会收到 webmaster @ localhost 电子邮件。
django.contrib.auth.forms.PasswordResetForm.save()函数使用“无”作为发件人的电子邮件地址,默认情况下使用 webmaster @ localhost ,因此您只需要添加 DEFAULT_FROM_EMAIL 属性设置为您的settings.py。
连接到您的生产环境,并使用python manage.py shell
运行django shell。
现在运行以下命令。
# Check your enviroment, should say something like production.
import os
os.environ.get('DJANGO_SETTINGS_MODULE')
# Check if the DEFAULT_FROM_EMAIL property is set.
from django.conf import settings
settings.DEFAULT_FROM_EMAIL
使用os.environ.get('DJANGO_SETTINGS_MODULE')
,您将获得用于生产的设置文件,因此,如果未设置settings.DEFAULT_FROM_EMAIL
,只需编辑该文件并将其与您的电子邮件一起添加。
使用其他电子邮件后端(mandrill,sendgrid等),以确保您的邮件将到达收件箱,而不是垃圾邮件文件夹。
为此,您可以使用django-anymail软件包。
How to create a password reset view in Django - simpleisbetterthancomplex.com