Django 1.8 邮件系统

题记

发送邮件是 Django 的默认支持,而且也是 Python 的默认支持,因此,配置 Django 的邮件发送可以说是非常容易。

从手动发送邮件、邮件通知管理员、日志事件与邮件的配合等等,应用可以说是非常的广泛。

但是为了配置邮件,也折腾了我半天的时间,因此有必要在这里记录一下配置的细节:

官方文档参考:

  1. 关于邮件的使用:https://docs.djangoproject.com/en/1.8/topics/email/
  2. 关于配置选项:https://docs.djangoproject.com/en/1.8/ref/settings/#email-backend

下面将重要的配置以及调试的要点说明一下:

# ============ ADMIN ==============

ADMINS = (
    ('alfred', '57082212@qq.com'),
    ('easecloud', 'debug@easecloud.cn'),
)

# ============= EMAIL ==============
SERVER_EMAIL = 'debug@easecloud.cn'
# Default: 'django.core.mail.backends.smtp.EmailBackend'
#EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
# Default: 'localhost'
#EMAIL_HOST = 'smtp.163.com'
EMAIL_HOST = 'smtp.exmail.qq.com'
EMAIL_HOST_USER = 'debug@easecloud.cn'
EMAIL_HOST_PASSWORD = '********'
EMAIL_PORT = 465
DEFAULT_FROM_EMAIL = SERVER_EMAIL
EMAIL_SUBJECT_PREFIX = '[MyApp] '
#EMAIL_USE_TLS = False
EMAIL_USE_SSL = True
#EMAIL_SSL_CERTFILE = None
#EMAIL_SSL_KEYFILE = None
#EMAIL_TIMEOUT = 1800

上面算是一个比较完整的配置,连接了一个外部的 smtp 服务器进行邮件的发送。

然后相关的参数已经列出,按照 smtp 服务器的说明进行配置即可。

但是刚开始的时候不知怎地就是发不出,下面给出逐层的调试以及我这边最后问题的解决原因分析。


调试说明

查看上面邮件发送的文档,这样进行调试:

第一步使用 send_mail 方法直接发送邮件进行测试:

>>> python manage.py shell

from django.core import mail

mail.send_mail('Subject', 'Content', 'from@example.com', 
    ['to@example.com'], fail_silently=False)

如果配置成功应该是可以发得出的,如果不行也会给出提示。

注意 from@example.com 这个地址需要和配置中的 SERVER_MAIL 配置一致,我测试的时候碰到过会提示要求一致。

完了之后,用下面这个测试向管理员发送邮件:

from django.core import mail

mail.mail_admins('Subject', 'Content')

我开始的时候就是一直用这个测试都不行,因为原以为这样的话会把邮件发给所有 superuser 的用户,但是后面发现原来这里指的 admin 是 settings.py 里面的 ADMINS 配置项,默认不配置的情况下是空的,注意这一点,基本就可以配置上了。


【转载请附】愿以此功德,回向 >>

原文链接:https://www.huangwenchao.com.cn/2015/09/django-1-8-mail.html【Django 1.8 邮件系统】

发表评论

电子邮件地址不会被公开。 必填项已用*标注