首页 > 解决方案 > 从 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

如果有人可以阐明问题所在,我很感激,谢谢,

标签: django

解决方案


我用来解决此问题的一件事是将 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'])

测试看看这是否提供更多信息。


推荐阅读