当前位置: 首页 > 知识库问答 >
问题:

姜戈

田德运
2023-03-14

这是我的settings.py:

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'email-smtp.us-east-1.amazonaws.com'
EMAIL_PORT = '465'
EMAIL_HOST_USER = config_data['EMAIL_HOST_USER']
EMAIL_HOST_PASSWORD = config_data['EMAIL_HOST_PASSWORD']
EMAIL_USE_SSL = True

我已经验证了电子邮件地址,并生成了SMTP凭据,我下载了包含IAM用户名、Smtp用户名、Smtp密码的凭据。我使用smtp用户名EMAIL_HOST_USER和smtp密码EMAIL_HOST_PASSWORD。

在django中,我发送了一封带有以下行的电子邮件(admin@admin.com替换为已验证电子邮件列表中的gmail帐户):

send_mail("Subject", "content", "admin@admin.com", [email], fail_silently=False)

那是行不通的。从SES控制台发送测试电子邮件(在验证电子邮件中选择一封电子邮件,然后单击发送测试电子邮件按钮)仍然有效。

这个文档说我可以使用openssl命令通过命令行发送电子邮件。因此,我对EC2机器进行了ssh,并使用:

openssl s_client -crlf -quiet -starttls smtp -connect email-smtp.us-east-1.amazonaws.com:25

请注意,我在这里使用25,当我使用端口465时,它输出:

didn't found starttls in server response, try anyway...
write:errno=32

所以我尝试了端口25,它连接(250 OK),然后我输入:

AUTH LOGIN
334 VXNlcm5hbWU6
SMTP_USER
334 UGFzc3dvcmQ6
SMTP_PASSWORD

但它输出:535个身份验证凭据无效。可能是我使用了错误的凭证吗?但是我直接从smtp用户和密码生成页面复制用户名和密码。

我还尝试将AmazonSESFullAccess策略附加到所有IAM用户,但什么也没发生。

我使用Django 1.8。2.尝试了Django ses,但也不起作用(运行测试时出现语法错误,它不支持python 3?)

使现代化

我将端口更改为587并使用USE_TLSTrue,现在我可以从django shellsend_mail。我把我的应用程序中的功能views.py:

def test_email(request):
  send_mail("title", "content", "abc@gmail.com", ["def@gmail.com"], fail_silently=False)
  return get_return_object(request, status_code=1)

和在URL中。py我把它放在urlpatterns中:

url(r'^test_email/$', views.test_email, name="test_email"),

当我访问网址时,什么也没发生。我从shelltest_email调用相同的函数,它可以工作。

使现代化

事实证明,我还可以使用端口465和SSL True,并能够从django shell发送邮件。但它在视图中仍然不起作用。派克

共有2个答案

太叔经赋
2023-03-14

2020更新

正如留档所说:Django电子邮件文档和Email_use_ssl

我现在用的是Django 3.0,留档说你可以用

EMAIL_USE_SSL = True

...一般用在465端口上

我让我的想法工作,并使用AWS SES和端口465服务发送电子邮件,而不是使用该行EMAIL_USE_TLS=True:)

史良哲
2023-03-14

如果使用端口465:使用pip安装django smtp ssl

pip install django-smtp-ssl

然后在“设置”中更改电子邮件\u后端。具体如下:

EMAIL_BACKEND = 'django_smtp_ssl.SSLEmailBackend'

如果使用端口587:

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
 类似资料:
  • 我可以成功地连接通过CURL使用的例子张贴在他们的留档这里: http://getblimp.github.io/django-rest-framework-jwt/#usage 问题来自于尝试使用Postman。我将authorization设置为Basic,并输入我的用户名/密码,然后得到一个400响应,其中包含以下json: 我不确定我是否遗漏了什么明显的东西。

  • 我一直在尝试创建一个django项目,该项目拥有用户,并且这些用户可以添加他们创建的书籍的标题。但每次我输入书名(不在管理页面上)时,我都会出现这个错误 models.py

  • 之前在单机上实现了一个Django服务器(被解放的姜戈07 马不停蹄),现在我们可以把这个服务器推上一个云平台。这里我选择使用阿里云。 看着复仇的火焰燃烧,姜戈露出得意的笑容。 阿里云准备 在阿里云官网(aliyun.com)页面注册阿里云账号。登录后选择云服务器ECS,并选择“创建实例”: 选择操作系统Ubuntu 14.04 64位,设置密码。实例开通后,可以在实例记录中查到它的IP地址,我以

  • 前面的文章研究了Django最主要的几个方面:数据库,模板,动态生成页面等。但都是使用python manage.py runserver来运行服务器。这是一个实验性的web服务器,不适用于正常的站点运行。我们需要一个可以稳定而持续的服务器。这个服务器负责监听http端口,将收到的请求交给Django处理,将Django的回复发还给客户端。 这样的持续性服务器可以有很多选择,比如apache, N

  • 之前了解了: 创建Django项目 数据库 模板 表格提交 admin管理页面 上面的功能模块允许我们做出一个具有互动性的站点,但无法验证用户的身份。我们这次了解用户验证部分。通过用户验证,我们可以根据用户的身份,提供不同的服务。 一个Web应用的用户验证是它的基本组成部分。我们在使用一个应用时,总是从“登录”开始,到“登出”结束。另一方面,用户验证又和网站安全、数据库安全息息相关。HTTP协议是

  • Django提供一个管理数据库的app,即django.contrib.admin。这是Django最方便的功能之一。通过该app,我们可以直接经由web页面,来管理我们的数据库。这一工具,主要是为网站管理人员使用。 这个app通常已经预装好,你可以在mysite/settings.py中的INSTALLED_APPS看到它。 “这庄园里的事情,都逃不过我的眼睛”,管家放下账本,洋洋得意。 默认界