一、获取邮箱授权码
以QQ邮箱为例子:
1、进入到设置,找到账户
2、开启POP3等服务,点击管理服务
3、进入管理服务,生成授权码
4、按照要求发送短信就可以了
5、将授权码复制保存,离开界面就看不到了
二、django项目中的配置
1、settings.py配置邮箱服务
#邮件配置
# EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.qq.com' # 如果是 163 改成 smtp.163.com
EMAIL_PORT = 465
EMAIL_HOST_USER = 'xxxx@qq.com' # 发送邮件的邮箱帐号
EMAIL_HOST_PASSWORD = 'QQ邮箱的授权码' # 授权码,各邮箱的设置中启用smtp服务时获取
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER #收件人显示发件人的邮箱
# DEFAULT_FROM_EMAIL = '<xxxxx@qq.com>' #也可以随意写
EMAIL_USE_SSL = True # 使用ssl
# EMAIL_USE_TLS = False # 使用tls
# EMAIL_USE_SSL 和 EMAIL_USE_TLS 是互斥的,即只能有一个为 True
2、在视图函数给邮箱发送短信
from django.core.mail import send_mail
import threading
from study_celery import settings
from django.view import View
from django.http import JsonResponse
class TestView(View):
def post(self,request):
email = request.POST.get('email')
data = request.POST.get('data')
t = threading.Thread(
target=send_mail,
args=(
"我给你发送邮件了",#邮件标题
f'邮箱的主体内容,{data}',#邮件内容(文本),有html_message参数,这里配置失效
settings.EMAIL_HOST_USER,#用于发送邮件的邮箱地址,配置授权码的邮箱
[email], # 接收邮件的邮件地址,可以写多个
),
# html_message中定义的字符串即HTML格式的信息,可以在一个html文件中写好复制出来放在该字符串中
kwargs={
'html_message': f"<p>这里是html的数据</p> <p>使用的是html的数据:{data}</p>"
})
t.start()
return JsonResponse({"code":200,'msg':'邮件发送成功了'})
3、调用请求的api,测试是否可以发送邮件