本文适合刚学习Python和Django Web开发的人练手。你会发现使用Django自带的send_mail方法发送电子邮件真是太简单了。本文教你如何在Django localhost环境下通过QQ邮箱或163邮箱发送电子邮件。
认识Django send_mail方法
使用Django自带的send_mail方法发送邮件非常简单。你先需要import send_mail, 然后按如下方式使用send_mail()。如果要给多人发邮件,可使用send_mass_mail方法。如果邮件发送成功,该方法会返回1。
from django.core.mail import send_mail
send_mail('Subject', 'body', 'from', ['to'], fail_silently=False)
from django.core.mail import send_mass_mail
send_mass_mail('Subject', 'body', 'from',
['recipient list'], fail_silently=False)
当然你在使用send_mail方法前,必需在settings.py里正确地配置发送邮件的电子邮箱。我们现在就教你怎么做。
settings.py中的邮箱配置
配置邮箱过程也非常简单,你只需要在settings.py添加如下信息。你肯定会问,我添加了这些信息Django就可以通过send_mail发送邮件给任何人了?个人邮箱行不行?localhost下行不行? 答案是YES。就是这么简单,就是这么任性。
EMAIL_HOST = 'smtp.xxx.com' #邮件服务器地址
EMAIL_PORT = xx # 端口号25 or 465
EMAIL_HOST_USER = '[email protected]' # 用户名
EMAIL_HOST_PASSWORD = 'xxxx' # 邮箱密码或授权码
EMAIL_USE_TLS = True # 默认
EMAIL_FROM = 'xxxx' # 发送人
现在我们来实际看下使用QQ邮箱发送邮件的配置。你只需要将QQ邮箱和授权码换成你自己的就行了。
EMAIL_HOST = 'smtp.qq.com'
EMAIL_PORT = 25
EMAIL_HOST_USER = '[email protected]' # 你的邮箱账号
EMAIL_HOST_PASSWORD = '*******' # 这里是邮箱提供给的授权码,不是个人密码
EMAIL_USE_TLS = True # 保持不变
EMAIL_FROM = '[email protected]' # 你的邮箱账号
腾讯邮箱为了安全起见,保护用户的密码,只授权第3方通过授权码而不是个人密码来登录。下面我们现在就来看看如何获取给第3方使用的授权码。
QQ邮箱如何获取授权码
登录你的QQ邮箱,点击左上角的设置 ->账户,如下图所示:
一直往下拉,找到POP3/IMAP服务,开启POP3和IMAP服务(需发送短信开通),然后点击右下角的'生成授权码', 就会得到16位随机字母组成的授权码。
163邮箱获取授权码
如果你使用163邮箱,需要将Host改为smtp.163.com 同时你也需要获取授权码,具体获取方式如下【来源-cnblogs领着猫散步的鱼】。
验证实际效果
我们现在来看看能不能成功发送邮件。最快的是方式是在cmd terminal里输入python manage.py shell打开python shell,然后输入命令:
>>> from django.core.mail import send_mail
>>> send_mail('Test email', 'First Django email by QQ', '[email protected]', ['[email protected]'], fail_silently=False)
如果返回1就证明你成功了。这时打开邮箱你就会看到Django发来的邮件。
如果你也看到这封邮件了,恭喜你。你已经学会了用Django发送邮件。