目录
- 1 什么时候需要发邮件
- 2 SMTP协议
- 3 IMAP协议
- 4 POP3 协议
- 5 邮件发送流程
- 6 django发送邮件
- 7 qq 邮箱
1 什么时候需要发邮件
2 SMTP协议
主要是发邮件
3 IMAP协议
主要是收邮件的协议
可以拉取部分数据
4 POP3 协议
5 邮件发送流程
django需要做的就是发送邮件,当一个邮件客户端
6 django发送邮件
7 qq 邮箱
我们授权我们的qq邮箱给django,在django项目里面,使用qq邮箱进行发送邮件
拉取到最下端
出现以上的界面,那么按照提示,使用你的手机,进行发送对应的东西,手机发送完成之后,点击我已发送
之后就弹出
把授权码记住; 授权码有了,之后就可以在setting.py里面进行配置就可以了;
代码语言:javascript复制# 邮件相关配置
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = "smtp.qq.com" # SMTP 服务器地址,格式就是smtp.xxx.com 如果是163邮箱就是smtp.163.com
EMAIL_PORT = 25 # SMTP 服务器默认端口
EMAIL_HOST_USER = "668888@qq.com" # 发送邮件的邮箱,变成你自己的
EMAIL_HOST_PASSWORD = "78888" # 发送短信之后获取的授权码
EMAIL_USE_TLS= False # 是否开启TLS连接(安全链接)
# EMAIL_FROM = "projectsedu@sina.com"
以上就配置好了,接下来写一个工具类,就是专门发送邮件的工具类,之后哪个地方想要发送邮件,直接调用方法发送就可以了;
代码语言:javascript复制from random import Random
from django.core.mail import send_mail
# 生成随机数
def random_str(randomlength=8):
str = ''
chars = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789'
length = len(chars) - 1
random = Random()
for i in range(randomlength):
str =chars[random.randint(0, length)]
return str
def send_register_email(email, send_type="register"):
# email_record = EmailVerifyRecord()
if send_type == "update_email":
code = random_str(4)
else:
code = random_str(16)
# email_record.code = code
# email_record.email = email
# email_record.send_type = send_type
# email_record.save()
email_title = ""
email_body = ""
if send_type == "register":
email_title = "在线网注册激活链接"
email_body = "请点击下面的链接激活你的账号: http://127.0.0.1:8000/active/{0}".format(code)
send_status = send_mail(email_title, email_body, "12144@qq.com", [email])
if send_status:
pass
elif send_type == "forget":
email_title = "注册密码重置链接"
email_body = "请点击下面的链接重置密码: http://127.0.0.1:8000/reset/{0}".format(code)
send_status = send_mail(email_title, email_body, "12144@qq.com", [email])
if send_status:
pass
elif send_type == "update_email":
email_title = "在线邮箱修改验证码"
email_body = "你的邮箱验证码为: {0}".format(code)
send_status = send_mail(email_title, email_body, "12144@qq.com", [email])
if send_status:
pass