django邮件通知功能-

需求:
1:下单人员下订单时需要向组长和投流手发送邮件通知
2:为何使用邮件通知功能?因为没钱去开通短信通知功能

设计
1:给用户信息表添加2个字段
第一个字段为:是否开通邮件通知的布尔值
第二个字段为: 用户接收通知的邮箱账号
2:发送通知时携带服务器中的时间,因为考虑到139服务器的接收时间可能会不一致
3:django自带邮件插件

高并发:不考虑

在这里插入图片描述

这个案例是使用139邮箱
获取邮箱的smtp功能,
启动程序后
1:程序发送邮件命令给139邮箱服务器
2:139邮箱服务器再发送给对应的被通知者
settings.py中设定

# -------------------------------------------------------
# 添加邮件通知
# 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中设定

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_noticeis_trader_notice = obj.trader_userid.is_email_notice# 进行判断# 当小组长开通了通知,投流手也开通了通知if is_team_notice and is_trader_notice:# 获取小组长的身份中的邮箱# 获取投流手身份中的邮箱team_leader_email = obj.team_leader_userid.user_emailtrader_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_emailif 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_emailif 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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/637704.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

react15与react16的本质区别

React 15 和 React 16 在架构和一些核心特性上存在本质性的区别。 1.Reconciliation(协调)算法: React 15: React 15 使用了递归的协调算法,即采用深度优先遍历整个组件树来协调更新。这种方式在处理大型组件树或深度嵌套组件时…

面试官:如何实现三栏布局,中间自适应

今天聊点简单的,最近在整理面试题的时候,看到css部分,感觉自己有段时间没有切页面了,正好趁着这个机会好好复习一下,加深一下印象。 如何实现三栏布局 中间自适应?这也是在前端面试官经常会问到的&#xf…

unity 利用Graphics.Blit来制作图片效果

c# 的代码 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI;public class GraphicsBlitTest : MonoBehaviour {public Texture2D source;//原纹理public Material material;//效果材质public RawImage rawImage;// Sta…

前端实现轮训和长连接

简介 轮训和长连接相关内容可以参考之前的文章消息推送系统。消息推送系统-CSDN博客文章浏览阅读106次。在餐饮行业中,店内应用有pos、厨显屏等,云端应用为对应数据中心。为了实现云端数据和操作指令下发到店内应用,需要有一个系统实现这个功…

【手写数据库toadb】01 开发数据库内核准备阶段-开发环境准备

开发环境 ​专栏内容: 手写数据库toadb 本专栏主要介绍如何从零开发,开发的步骤,以及开发过程中的涉及的原理,遇到的问题等,让大家能跟上并且可以一起开发,让每个需要的人成为参与者。 本专栏会定期更新,对应的代码也会定期更新,每个阶段的代码会打上tag,方便阶段学习…

配置DNS主从服务器,实现真反向解析

主服务器 [rootbogon ~]# systemctl stop firewalld.service #关闭防火墙 [rootbogon ~]# setenforce 0 #关闭selinux [rootbogon ~]# systemctl restart named #启动dns服务 [rootbogon ~]# vim /etc/named.conf #进入dns配置文件 options {#监听…

udp丢包处理方法

UDP丢包处理方法如下1: 使用前向纠错码(FEC)技术。通过在发送端添加冗余信息,使接收端能够在收到部分丢失的数据时进行纠错。 使用前向纠错码(FEC)技术是一种有效的处理UDP丢包的方法。FEC技术通过在发送…

【ARM 嵌入式 编译系列 2.4 -- GCC 编译参数学习 -Wl,--gc-sections 】

请阅读【嵌入式开发学习必备专栏 之 ARM GCC 编译专栏】 文章目录 概述-Wl 选项例子: --gc-sections --gc-sections例子: -Wshadow例子: -Wlogical-op例子: -Waggregate-return例子: -Wfloat-equal例子: -W…

2023年12月 电子学会 青少年软件编程等级考试Scratch三级真题

202312 青少年软件编程等级考试Scratch三级真题 一、单项题 第 1 题 运行左图程序,想得到右图中的效果,红色框应填写的数值是?( ) A:12 B:11 C:10 D:9 第 2 题 下列…

每天都美好的一天

每天我们都会遇到不同的事情,开心的、愤怒的、悲伤的等等,今天过完明天我们还得继续,所以一切又显得不那么重要。一天中如果有不开心的事情发生会影响我们当天很长一段时间,甚至未来几天。 今天所做之事都是自己明天的基础&#…

修改live server的默认浏览器(vscode)

在插件打开设置 修改选定浏览器

VC++中使用OpenCV进行颜色检测

VC中使用OpenCV进行颜色检测 在VC中使用OpenCV进行颜色检测非常简单,首选读取一张彩色图像,并调用函数cvtColor(img, imgHSV, COLOR_BGR2HSV);函数将原图img转换成HSV图像imgHSV,再设置好HSV三个分量的上限和下限值,调用inRange函…

C++实现一个简单的学生管理系统

目录 1.一个简单的学生管理系统简介 2.定义一个 Student 类 2.1用于表示学生信息。 3.定义一个 StudentManager 类 3.1用于管理学生信息。 4.在 main 函数中 4.1使用上述两个类来实现一个简单的学生管理系统 5.C类模板 推荐阅读: calloc与realloc和malloc的…

多线程(看这一篇就够了,超详细,满满的干货)

多线程 一.认识线程(Thread)1. 1) 线程是什么1. 2) 为啥要有线程1.3) 进程和线程的区别标题1.4) Java的线程和操作系统线程的关系 二.创建线程方法1:继承Thread类方法2:实现Runnable接口方法3:匿名内部类创建Thread子类对象标题方法4:匿名内部类创建Runn…

MySQL TINYINT(1)和TINYINT(2)有什么区别?

文章目录 1.直接建表2.查询数据3.总结 身为程序员,拿事实说话拿代码说话最直观了,show the code 1.直接建表 CREATE TABLE tinyinttest (id int NOT NULL,a TINYINT(1) NOT NULL DEFAULT 0,b TINYINT(2) NOT NULL DEFAULT 0,c TINYINT(1) ZEROFILL NOT…

JSON 基本语法以及在Java 中的使用

文章目录 一、JSON 概述1.1 什么是 JSON1.2 JSON数据类型和语法1.3 JSON 优势 二、使用 JSON2.1 在 Java程序中使用 JSON2.2 Jackson的使用2.2.1 Jackson的简单介绍2.2.2 反序列化2.2.3 序列化 参考资料 一、JSON 概述 1.1 什么是 JSON JSON(JavaScript Object No…

Unity下实现跨平台的RTMP推流|轻量级RTSP服务|RTMP播放|RTSP播放低延迟解决方案

2018年,我们开始在原生RTSP|RTMP直播播放器的基础上,对接了Unity环境下的低延迟播放,毫秒级延迟,发布后,就得到了业内一致的认可。然后我们覆盖了Windows、Android、iOS、Linux的RTMP推送、轻量级RTSP服务和RTSP|RTMP播…

VRRP协议负载分担

VRRP流量负载分担 VRRP负载分担与VRRP主备备份的基本原理和报文协商过程都是相同的。同样对于每一个VRRP备份组,都包含一个Master设备和若干Backup设备。与主备备份方式不同点在于:负载分担方式需要建立多个VRRP备份组,各备份组的Master设备可以不同;同一台VRRP设备可以加…

ctfshow信息收集(web1-web20)

目录 web1 web2 web3 web4 web5 web6 web7 web9 web10 web11 web14 web15 web16 web17 web18 web19 web20 web1 根据提示的孩子开发的时候注释没有被及时删除 web2 js原因无法查看源代码 第一种方法 在url前加入 view-source: 会显示页面源代…

【车载HMI开发工具--EB GUIDE 与 Unity 合作提供一体化的沉浸式 HMI 设计开发工具链】【转载】

随着车载高性能计算平台的日益普及以及显示器尺寸和数量的不断增加,沉浸式车载人机交互界面(HMI)的需求也在持续增长。为了将实时 3D 技术带入车载 HMI 领域,Unity 与 Elektrobit (EB)展开了合作,EB 是推进 HMI 功能安…