Localhost使用Django send_mail发送邮件 - 以QQ和163邮箱为例

本文适合刚学习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邮箱,点击左上角的设置 ->账户,如下图所示:

Localhost使用Django send_mail发送邮件 - 以QQ和163邮箱为例_第1张图片

一直往下拉,找到POP3/IMAP服务,开启POP3和IMAP服务(需发送短信开通),然后点击右下角的'生成授权码', 就会得到16位随机字母组成的授权码。

Localhost使用Django send_mail发送邮件 - 以QQ和163邮箱为例_第2张图片


163邮箱获取授权码

如果你使用163邮箱,需要将Host改为smtp.163.com  同时你也需要获取授权码,具体获取方式如下【来源-cnblogs领着猫散步的鱼】。

Localhost使用Django send_mail发送邮件 - 以QQ和163邮箱为例_第3张图片

        Localhost使用Django send_mail发送邮件 - 以QQ和163邮箱为例_第4张图片

        Localhost使用Django send_mail发送邮件 - 以QQ和163邮箱为例_第5张图片

验证实际效果

我们现在来看看能不能成功发送邮件。最快的是方式是在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发来的邮件。

Localhost使用Django send_mail发送邮件 - 以QQ和163邮箱为例_第6张图片

如果你也看到这封邮件了,恭喜你。你已经学会了用Django发送邮件。

你可能感兴趣的:(Django,Django基础连载,Django,Email,send_mail,QQ,163)