【发布时间】:2018-09-20 16:48:53
【问题描述】:
我被要求为使用 Django/Python 框架实现的现有程序添加一项功能。此功能将允许用户单击一个按钮,该按钮将显示一个小对话框/表单以输入值。
我确实编写了一些代码,显示电子邮件已发送但实际上并没有发送!
我的代码:
from django.shortcuts import render
from django.core.mail import send_mail
# Create your views here.
def index(request):
send_mail('Request for a Clause',
'This is an automated email. Jeff, please submit the case for 1234567',
'akohan@mycompay.com',
['jjohnson@mycompany.com'],
fail_silently=False)
return render(request, 'send/index.html')
在项目根目录下,在setting.py我已经添加了SMTP配置:
EMAIL_HOST = 'mail.mycompany.com'
EMIAL_PORT = 587
#EMAIL_HOST_USER = 'akohan@mycompany.com' ;no need it is on the white list
#EMAIL_HOST_PASSWORD = '' ;no need it is on the white list
EMAIL_USE_TLS = True
EMAIL_USE_SSL = False
我通过输入来运行它:
python manage.py SendEmailApp
我在这里错过了什么?
【问题讨论】:
-
为了排除显而易见的问题,您是否仔细检查了电子邮件凭据、SMTP 配置和垃圾邮件文件夹?
-
另外,你输入“python manage.py SendEmailApp”是什么意思?这不是您使用 django 测试网站的方式。
-
问候,@ubadub 是的,垃圾邮件文件夹中没有任何内容,就 SMTP 配置而言,我使用 IT 部门运行它。我不确定 TLS 和 SSL 值。当然,两者都不能设置为 True,因为它们是互斥的。所以我设置 SSL=True 和 TLS=False 然后它抛出以下错误: self._sslobj.do_handshake() ssl.SSLError: [SSL: WRONG_VERSION_NUMBER] 错误的版本号 (_ssl.c:1045) [20/Sep/2018 10 :32:22] "GET / HTTP/1.1" 500 119908 现在,唯一可能的设置应该是 SSL=False 和 TLS=True,这次我得到:[20/Sep/2018] "GET / HTTP/1.1" 200 269
-
再次,我是 Python 新手,但从我在命令行中编写/更新代码后看到的内容,我键入:python manage.py ProjectName
-
settings.py中EMAIL_BACKEND的值是多少?对于 DEBUG 模式,它通常设置为 'django.core.mail.backends.console.EmailBackend',以便发送的电子邮件显示在控制台中,并且在测试时不会向人们发送垃圾邮件。在生产中,您需要将其更改为 'django.core.mail.backends.smtp.EmailBackend'
标签: python django python-3.x smtplib