我尝试在Django1.3.1中使用Amazon新的SES SMTP服务,但我没有太多的运气。
我已经创建了SES SMTP凭据,并将其设置为:
EMAIL_USE_TLS = True
EMAIL_HOST = 'email-smtp.us-east-1.amazonaws.com'
EMAIL_HOST_USER = 'my-smtp-user'
EMAIL_HOST_PASSWORD = 'my-smtp-password'
EMAIL_PORT = 465
然后我尝试发送一封测试电子邮件(来自和发送到验证的电子邮件地址):
from django.core.mail import send_mail
send_mail('Test subject', 'This is the body', 'info@abc.com',['hello@abc.com'], fail_silently=False)
但我得到了以下错误:
SMTPServerDisconnected: Connection unexpectedly closed
我可以telnet到服务器:
telnet email-smtp.us-east-1.amazonaws.com 465
8条答案
按热度按时间yqlxgs2m1#
我发现了一个简单得多的解决方案,它允许我使用Django内置的邮件类,这样我仍然可以得到我的管理错误邮件报告等。
多亏了这个小美人,我能够使用SES SMTP没有任何问题:
https://github.com/bancek/django-smtp-ssl
下载并安装(pythonsetup.py安装)
然后只需更改您的设置即可使用此新的电子邮件后端:
其余设置与正常设置相同:
3yhwsihp2#
不需要库。
学分:https://stackoverflow.com/a/32476190/5647272
参考:https://docs.djangoproject.com/en/2.2/topics/email/
1sbrub3j3#
2022年8月更新Django-3.2.4:
不需要
django-ses
或django-amazon-ses
等库!!我添加了**
DEFAULT_FROM_EMAIL
**。如果你不需要它,就把它注解掉!
此外,对于**
DEFAULT_FROM_EMAIL
,请输入一个verified domain
或email address
,无论您的帐户是否在sandbox
中。因此,对于下面的验证域
sender.com
**,以下三项有效:(仅使用三个中的一个)
但以下两项无效:(这些会给你带来错误)
something@sender.com
**!!然后,对于下面验证的**
2 email addresses
**,仅使用以下两个选项之一:
最后,对于**
EMAIL_HOST_USER
和EMAIL_HOST_PASSWORD
,必须创建SMTP Credentials
。选择
SMTP Settings
**:按下**
Create My SMTP Credentials
**按钮:给定**
SMTP Credentials
**:然后,将**
SMTP Credentials
**如下所示:SMTP Credentials
**)b4qexyjb4#
从Django 1.7开始,您可以使用SSL原生发送电子邮件,而无需第三方库。
文件
8mmmxcuj5#
经过长时间的搜索和尝试,我发现:
而是使用:
对于AmazonSES,SMTP必须为:
所以,我认为,对于django,你可以修复django代码,或者编写你自己的简单的电子邮件后端[基于默认的django电子邮件后端]。
我找到了另一个解决方案(但没有亲自测试):从下面的链接使用SSLEmailBackend
(From此处为:Mysterious issue with Django + uWSGI + send email)
AmazonSES从现在起支持STARTTLS:)
Amazon SES支持扩展的附件类型、VERP和STARTTLS for SMTP
(from亚马逊通讯)
bpsygsoo6#
http://aws.amazon.com/articles/2405502737055650
核心python功能示例
8oomwypt7#
我花了大概3个小时来思考这个问题。你的smtplib解决方案是用s.starttls()和s.login()来完成的,这对于python程序来说是很好的,所有的电子邮件凭证都在同一个文件中。但是我不认为这是一个在Django中完成的干净的方法。所以我最终找到了它。不管你的机器是32位还是64位。只要按照下面的步骤做就行了:
1.安装boto
pip安装--升级boto
1.安装django-ses
管道安装django-ses
1.在您的djandosettings.py文件中更新以下信息。
电子邮件后端= 'django_ses. SES后端'
AWS访问密钥ID = '您的用户名'
AWS保密访问密钥= '您的密码'
1.在你的django文件中你想发送邮件的地方
从django.core.mail导入发送邮件
send_mail('测试主题','这是正文','info@abc.com',['hello@abc.com'],静默失败=假)
bvk5enib8#
我已经尝试了smtp设置,以@Givp(谁回答以上),我想给予完整的AWS的SMTP设置在django。
在这里,我们必须验证所有的邮件ID发送电子邮件之前。然后一切都会工作,因为我们的期望