我正在尝试在Django 1.7中使用标准的send_email(来自django.core.mail import send_mail)。
我有以下电话:
send_mail('subject', 'body', 'sender@example.com', ['me@example.com'], fail_silently=False)
和我的settings.py:
EMAIL_USE_TLS=True
EMAIL_BACKEND='django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST='mail.example.com'
EMAIL_PORT=587
EMAIL_HOST_USER='sender'
EMAIL_HOST_PASSWORD='password'
DEFAULT_FROM_EMAIL='sender@example.com'
这让我在Django中出错:
SMTPAuthenticationError: (535, '5.7.8 Error: authentication failed: authentication failure')
和我的postfix邮件:
Apr 8 12:33:10 ip-172-30-0-149 postfix/smtpd[26859]: warning: unknown[<mxip>]: SASL PLAIN authentication failed: authentication failure
但是,如果我执行以下操作:
## Email the code
from django.core.mail import send_mail
from django.core.mail.backends.smtp import EmailBackend
from django.core.mail import EmailMessage
eb = EmailBackend(host='mail.example.com', port=587, username='sender', password='password', use_tls=True, fail_silently=False)
eb.open()
email = EmailMessage('Test', 'message ', 'sender@example.com', ['me@example.com'], [])
eb.send_messages( [email] )
eb.close()
完全正常。
据我所知,上面的设置与我的settings.py文件中的EMAIL设置相同。
当我尝试使用send_mail(我的首选)与EmailBackend相比发送时,为什么会出现错误?
答案 0 :(得分:0)
尝试排除EMAIL_BACKEND='django.core.mail.backends.smtp.EmailBackend'
,我在没有该选项的情况下运行,效果很好。
所以最终的配置是
EMAIL_USE_TLS=True
EMAIL_HOST='mail.example.com'
EMAIL_PORT=587
EMAIL_HOST_USER='sender'
EMAIL_HOST_PASSWORD='password'
DEFAULT_FROM_EMAIL='sender@example.com'
希望这会有所帮助。