django邮件通知功能-

需求:

1:下单人员下订单时需要向组长和投流手发送邮件通知

2:为何使用邮件通知功能?因为没钱去开通短信通知功能

设计

1:给用户信息表添加2个字段

第一个字段为:是否开通邮件通知的布尔值

第二个字段为: 用户接收通知的邮箱账号

2:发送通知时携带服务器中的时间,因为考虑到139服务器的接收时间可能会不一致

3:django自带邮件插件

高并发:不考虑

这个案例是使用139邮箱

获取邮箱的smtp功能,

启动程序后

1:程序发送邮件命令给139邮箱服务器

2:139邮箱服务器再发送给对应的被通知者

settings.py中设定

python 复制代码
# -------------------------------------------------------
# 添加邮件通知
# 1使用的django内置邮件插件
EMAIL_BACKEND='django.core.mail.backends.smtp.EmailBackend'
# 2邮箱的服务地址
EMAIL_HOST='smtp.139.com'
# 3 端 口--找到139邮件中的smtp 给出的端口 默认25 非ssl的是25
# EMAIL_PORT=25
# 3 端 口--SSL时为465
EMAIL_USE_SSL=True
EMAIL_PORT=465
# 4 我的邮箱账号
EMAIL_HOST_USER='[email protected]'
# 5 我的授权码就是邮箱密码
EMAIL_HOST_PASSWORD='xxxxxxxxxx3fa2900'
# -------------------------------------------------------

admin.py中设定

python 复制代码
from django.core.mail import send_mail


# 在订单管理函数中
# 1 判断当前添加的订单是否是有id这个值的,当没有id这个值,那么就是新添加的订单(Django models.py中设定了id值是自动累加添加的数值)
#   所以添加数据是没有id值的
class Order_salesmanAdmin(admin.ModelAdmin):
    ...

    def save_model(self, request, obj, form, change):

    # 判断没有id值时,那么表示为添加新订单
    # 当当前添加订单的身份级别为7时,那么执行逻辑

    if not obj.pk:
        if UserProfile.objects.get(user=request.user).userrank == 7:
            # 获取到订单中指定的人员中是否开通邮件通知的布尔值
            # 小组组长的身份中,是否开通邮件通知的布尔值
            # 投流手的身份中,是否开通邮件通知的布尔值
            is_team_notice = obj.team_leader_userid.is_email_notice
            is_trader_notice = obj.trader_userid.is_email_notice

            # 进行判断
            # 当小组长开通了通知,投流手也开通了通知
            if is_team_notice and is_trader_notice:
                # 获取小组长的身份中的邮箱
                # 获取投流手身份中的邮箱
                team_leader_email = obj.team_leader_userid.user_email
                trader_email = obj.trader_userid.user_email
                # 当小组长和投流手的邮箱值为"无"时,表示为默认值
                # 所以当投流手和小组长的邮件都有邮箱时
                if trader_email != "无" and team_leader_email != "无":
                    # 发送邮件
                    send_mail(
                        # 使用当前用户的用户名作为邮件的标题
                        UserProfile.objects.get(user=request.user).user.username,
                        # 邮件的内容
                        f'{datetime.datetime.now():%d日%H时:%M分},添加了一张新订单',
                        # 邮件的发送人
                        '[email protected]',
                        # 邮件的接收人
                        # 1小组长
                        [team_leader_email,
                         # 2投流人
                         trader_email,
                         ], fail_silently=False)
            # 当小组长开通了 邮件通知功能
            # 向小组长发送邮件
            elif is_team_notice:
                team_leader_email = obj.team_leader_userid.user_email
                if team_leader_email != "无":
                    send_mail(
                        # 使用当前用户的用户名作为邮件的标题
                        UserProfile.objects.get(user=request.user).user.username,
                        # 邮件的内容
                        f'{datetime.datetime.now():%d日%H时:%M分},添加了一张新订单',
                        # 邮件的发送人
                        '[email protected]',
                        # 邮件的接收人
                        # 1小组长
                        [team_leader_email,
                         # 2投流人
                         ], fail_silently=False)
            # 当投流手开通了 邮件通知功能
            # 向投流手发送邮件
            elif is_trader_notice:
                # 向投流人发送邮件
                trader_email = obj.trader_userid.user_email
                if trader_email != "无":
                    send_mail(
                        # 使用当前用户的用户名作为邮件的标题
                        UserProfile.objects.get(user=request.user).user.username,
                        # 邮件的内容
                        f'{datetime.datetime.now():%d日%H时:%M分},添加了一张新订单',
                        # 邮件的发送人
                        '[email protected]',
                        # 邮件的接收人
                        # 1小组长# 2投流人
                        [trader_email, ], fail_silently=False)
相关推荐
从零开始学习人工智能15 分钟前
Doris 数据库深度解析:架构、原理与实战应用
数据库·架构
LiRuiJie1 小时前
深入剖析MySQL锁机制,多事务并发场景锁竞争
数据库·mysql
2501_915374351 小时前
Faiss向量数据库全面解析:从原理到实战
数据库·faiss
睡觉待开机1 小时前
0. MySQL在Centos 7环境安装
数据库·mysql·centos
2501_915374351 小时前
Faiss vs Milvus 深度对比:向量数据库技术选型指南
数据库·milvus·faiss
傻啦嘿哟2 小时前
Python 数据分析与可视化实战:从数据清洗到图表呈现
大数据·数据库·人工智能
cookqq2 小时前
mongodb源码分析session异步接受asyncSourceMessage()客户端流变Message对象
数据库·sql·mongodb·nosql
呼拉拉呼拉2 小时前
Redis故障转移
数据库·redis·缓存·高可用架构
什么都想学的阿超3 小时前
【Redis系列 04】Redis高可用架构实战:主从复制与哨兵模式从零到生产
数据库·redis·架构
pp-周子晗(努力赶上课程进度版)3 小时前
【MySQL】视图、用户管理、MySQL使用C\C++连接
数据库·mysql