django 发送邮件

在Python中已经内置了一个smtp邮件发送模块,Django在此基础上进行了简单地封装,让我们在Django环境中可以更方便更灵活的发送邮件。

首先settings里面设置

# SMTP 发送邮箱
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = "smtp.qq.com"  # SMTP服务器主机
EMAIL_PORT = 25             # 端口
EMAIL_HOST_USER = "2292@qq.com"       # 发送邮件的邮箱
EMAIL_HOST_PASSWORD = "uhogmjwnlkzhdjcc"    # 密码
EMAIL_USE_TLS = True
EMAIL_FROM = "python<2257@qq.com>"            # 收件人看到的发件人

要想用QQ邮箱作为服务器发送邮件首先, 必须先开启SMTP

1)登录邮箱,找到“设置”-->>“帐户

 

 

 发送邮件代码

复制代码
# apps/utils/email_send.py

from random import Random
from django.core.mail import send_mail

from users.models import EmailVerifyRecord
from MxOnline.settings import EMAIL_FROM

# 生成随机字符串
def random_str(random_length=8):
    str = ''
    # 生成字符串的可选字符串
    chars = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789'
    length = len(chars) - 1
    random = Random()
    for i in range(random_length):
        str += chars[random.randint(0, length)]
    return str

# 发送注册邮件
def send_register_eamil(email, send_type="register"):
    # 发送之前先保存到数据库,到时候查询链接是否存在
    # 实例化一个EmailVerifyRecord对象
    email_record = EmailVerifyRecord()
    # 生成随机的code放入链接
    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:8080/active/{0}".format(code)
        # html 内容
        content = "请点击下面的链接激活你的账号: http://127.0.0.1:8080/active/{0}".format(code)
        html_message = '<h1>%s</h1>' % content  # 发送html格式
        # 使用Django内置函数完成邮件发送。四个参数:主题,邮件内容,从哪里发,接受者list
        send_status = send_mail(email_title, email_body, EMAIL_FROM, [email], html_message=html_message)
        # 如果发送成功
        if send_status:
            pass

    elif send_type == "forget":
        # 主题
        email_title = "您好"
        # 内容
        email_body = "今天开会"
        content = "请点击链接修改您的密码:http://127.0.0.1:8080/reset/{0}".format(code)
        html_message = '<h1>%s</h1>' % content  # 发送html格式
        # 使用Django内置函数完成邮件发送。四个参数:主题,邮件内容,从哪里发,接受者list
        send_status = send_mail(email_title, email_body, EMAIL_FROM, [email], html_message=html_message)
        # 如果发送成功
        if send_status:
            pass

    elif send_type == "update_email":
        email_title = "NBA邮箱修改验证码"
        email_body = "你的邮箱验证码为{0}".format(code)

        # 使用Django内置函数完成邮件发送。四个参数:主题,邮件内容,从哪里发,接受者list
        send_status = send_mail(email_title, email_body, EMAIL_FROM, [email])
        # 如果发送成功
        if send_status:
            pass
View Code
复制代码
调用方法
user_name = 2299@qq.com
send_register_eamil(user_name, 'register')
posted @   长乐未央丫  阅读(114)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示