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)
相关推荐
IT毕设梦工厂7 分钟前
计算机毕业设计选题推荐-在线拍卖系统-Java/Python项目实战
java·spring boot·python·django·毕业设计·源码·课程设计
小诸葛的博客33 分钟前
pg入门1——使用容器启动一个pg
数据库
大熊程序猿1 小时前
python 读取excel数据存储到mysql
数据库·python·mysql
落落落sss1 小时前
sharding-jdbc分库分表
android·java·开发语言·数据库·servlet·oracle
jnrjian1 小时前
Oracle 启动动态采样 自适应执行计划
数据库·oracle
lamb张2 小时前
MySQL锁
数据库·mysql
ForRunner1232 小时前
使用 Python 高分解决 reCAPTCHA v3 的指南
数据库·python·microsoft
躺平的花卷3 小时前
Python爬虫案例六:抓取某个地区某月份天气数据并保存到mysql数据库中
数据库·爬虫·python·mysql
Flying_Fish_roe3 小时前
linux-安全管理-防火墙与网络安全
linux·数据库·oracle