django - 从 django 应用程序发送电子邮件在服务器上不起作用
问题描述
我有一个在创建对象时发送电子邮件的应用程序,这是发送电子邮件的代码:
from django.core.mail import send_mail
send_mail("New entryis added", "Hi a new entry is added", "myemail@gmail.com", [c.email for c in CustomUser.objects.all()], fail_silently=False)
这是我的设置:
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = 'myemail'
EMAIL_HOST_PASSWORD = 'password'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
我还确保我的“不太安全的应用程序访问”在谷歌安全设置中处于打开状态。因此,通过所有这些,我可以在本地服务器上毫无问题地发送电子邮件。但是,当我将代码推送到数字海洋水滴 linux 服务器时,它会引发一些错误:
SMTPAuthenticationError at /a/b/c/add/
(534, b'5.7.14 <https://accounts.google.com/signin/continue?sarp=1&scc=1&plt=AKgnsbu\n5.7.14 VVGrAjSoYzu_W9fGpWsq5B3qMs04qWLzeqnxkFdrMaeVJumRRljQzXEyYpA9xt1MSYaii\n5.7.14 iyVCj2qaXbQzY5Tvc3mux9qViJSKE5yOozpCzao_qU0FhjYGX8IZ1xgd9PUep41I>\n5.7.14 Please log in via your web browser and then try again.\n5.7.14 Learn more at\n5.7.14 https://support.google.com/mail/answer/78754 g9sm2079574pgj.89 - gsmtp')
Exception Type: SMTPAuthenticationError
如果有人可以阐明问题所在,我很感激,谢谢,
解决方案
我用来解决此问题的一件事是将 TLS 变量放在首位。将此置于所有其他设置之上。
EMAIL_USE_TLS = True
试试这个来帮助诊断它。您可以从 Django shell 发送电子邮件,因此 ssh 进入您的服务器并尝试此操作。
>>> from django.core.mail import send_mail
>>> send_mail('test email', 'hello world', 'myemail@gmail.com', ['your@email.com'])
测试看看这是否提供更多信息。
推荐阅读
- c# - DataTemplate OnSelectTemplate 不工作 Xamarin.Forms
- laravel - Laravel - 如何根据通过 URL 参数传递的不记名令牌获取用户信息?
- python - 在sharepoint office365 REST Python Client上上传不同大小的文件
- c# - 如何使用 dotnet 在 linux 二进制文件中应用 PIE(位置独立可执行文件)选项?
- pdf - SAS ODS PDF 带和不带密码
- c# - 有没有办法在单个变量上应用多个逻辑运算符而不重复变量名?
- javascript - Vue JS 项目中注入的事件监听器并不总是在页面更改时触发
- .net - 如何使用 EF Core fluent API 和值转换器创建外键
- google-bigquery - 移动到其他位置后,Google Data Studio 找不到 bigquery 数据集
- integer - {Azure SQL DB} - INT 与 DECIMAL,比例 = 0