Django发送邮件(附代码)

2022-05-16 08:19:18 浏览数 (1)

目录

  • 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

0 人点赞