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='luichxxx@139.com'
# 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分},添加了一张新订单',
                        # 邮件的发送人
                        'luichuns@139.com',
                        # 邮件的接收人
                        # 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分},添加了一张新订单',
                        # 邮件的发送人
                        'luichuns@139.com',
                        # 邮件的接收人
                        # 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分},添加了一张新订单',
                        # 邮件的发送人
                        'luichuns@139.com',
                        # 邮件的接收人
                        # 1小组长# 2投流人
                        [trader_email, ], fail_silently=False)
相关推荐
不光头强25 分钟前
Spring框架的事务管理
数据库·spring·oracle
百***92023 小时前
【MySQL】MySQL库的操作
android·数据库·mysql
q***76663 小时前
Spring Boot 从 2.7.x 升级到 3.3注意事项
数据库·hive·spring boot
信仰_2739932433 小时前
Redis红锁
数据库·redis·缓存
人间打气筒(Ada)3 小时前
Centos7 搭建hadoop2.7.2、hbase伪分布式集群
数据库·分布式·hbase
心灵宝贝3 小时前
如何在 Mac 上安装 MySQL 8.0.20.dmg(从下载到使用全流程)
数据库·mysql·macos
奋斗的牛马4 小时前
OFDM理解
网络·数据库·单片机·嵌入式硬件·fpga开发·信息与通信
忧郁的橙子.5 小时前
一、Rabbit MQ 初级
服务器·网络·数据库
杰杰7985 小时前
SQL 实战:用户访问 → 下单 → 支付全流程转化率分析
数据库·sql
爬山算法5 小时前
Redis(120)Redis的常见错误如何处理?
数据库·redis·缓存