在Django中发送邮件

对于网站来说,邮件功能不能说是一个常用功能,但也是不可或缺的.之前在自己的博客网站中实现了新注册用户必须经过邮件验证才能激活的功能,记录一下过程.

正文

1 设置发件服务器

1
2
3
4
5
6
# settings.py
EMAIL_HOST = 'smtp.sina.com'
EMAIL_PORT = 25
EMAIL_HOST_USER = 'my-email@sina.com'
EMAIL_HOST_PASSWORD = '******'
EMAIL_USE_TLS = True

EMAIL_HOST: smtp服务器地址
EMAIL_PORT: 服务器端口
EMAIL_HOST_USER: 邮箱账号
EMAIL_HOST_PASSWORD: 邮箱密码
EMAIL_USE_TLS: 是否使用TLS加密

可以查看django的settings中关于email的部分了解进一步信息.
关于服务器地址和端口以及是否支持SSL/TLS, 请查看你使用的邮箱的帮助文档.国内使用最方便的我觉得是QQ邮箱.

2: 发送邮件

1
2
3
4
5
6
7
8
9
10
def send(to):
"""
to: 目标邮箱地址
"""
subject, form_email = 'hi', 'Me <my-emial@sina.com>'
text_content = "这是一份邮件"
html_content = "<b>这是一份邮件</b><br />"
mail = EmailMultiAlternatives(subject, text_content, form_email, [to])
mail.attach_alternative(html_content, 'text/html')
mail.send()

EmailMultiAlternatives类的使用参考EmailMultiAlternatives类
这个方法比起简单的send_mail,好处是发送出的邮件中同时包含了文本和超文本内容,如果要在邮件中加入链接,使用这种方式体验比较好.

参考资料

Django官方文档的邮件模块