发送钉钉、邮件、手机信息

其中下列部分用到了Hutool中的工具,可先导入Hutool依赖

 <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.16</version></dependency>

钉钉

 public void sendDingDing(PoMaster poMaster){String url="钉钉机器人的opai";JSONObject js = new JSONObject();js.set("msgtype","markdown");js.set("markdown",new JSONObject().set("title"," 益达律师所邀请您审核采购单").set("text","益达律师所邀您查看编号:"+poMaster.getId()+"的订单 ![screenshot](https://pic.3gbizhi.com/uploads/20231129/0750e85fa5fd97e19dfb879770d7f7db.jpg)\n"));//js.set("at",new JSONObject().set("atMobiles",new JSONArray().set("tel"))); 按照手机号发送js.set("at",new JSONObject().set("isAtAll",true));String s = JSONUtil.toJsonStr(js);HttpRequest.post(url).body(s).execute().body();}

邮件

 public Integer sendEmail(String email) {MailAccount account = new MailAccount();account.setHost("smtp.aliyun.com");account.setPort(25);account.setAuth(true);account.setFrom("your Email");account.setUser("your Email");account.setPass("your Password");int code = RandomUtil.randomInt(1000, 10000);String url="https://baike.baidu.com/item/%E5%A4%A9%E4%B8%8A%E4%BA%BA%E9%97%B4/11074119";String content = "天上人间提醒您,您的验证码为:"+code+"请勿给他人观看及使用🥰🥰";TelMap.put(email,code);MailUtil.send(account, CollUtil.newArrayList(email), "天上人间", content, false);return 0;}//发送带样式Email
ublic void sendEmail(PoMaster poMaster){MailAccount account = new MailAccount();account.setHost("smtp.aliyun.com");account.setPort(25);account.setAuth(true);account.setFrom("your Email");account.setUser("your Email");account.setPass("your Password");StringBuilder body = new StringBuilder();body.append(StrUtil.format("<h1>采购单:{},总金额:{}, 需要您的审核🥰🥰</h1>", poMaster.getId(), poMaster.getTotalPrice()));body.append(" <table border='1'> ");body.append(" <tr> ");body.append(" <td> ");body.append("商品名称");body.append(" </td>");body.append(" <td> ");body.append("采购数量");body.append(" </td>");body.append(" <td> ");body.append("采购单价");body.append(" </td>");body.append(" <td> ");body.append(" 商品金额");body.append(" </td>");body.append(" </tr> ");poMaster.getItems().forEach(item -> {body.append(" <tr> ");body.append(" <td> ");body.append(StrUtil.format("<a href='http://localhost:8080/#/po/detail?id={}' target='_blank'>{}</a>", item.getId(), item.getProductName()));body.append(" </td>");body.append(" <td> ");body.append(item.getQty());body.append(" </td>");body.append(" <td> ");body.append("¥"+item.getPrice());body.append(" </td>");body.append(" <td> ");body.append("¥"+item.getPrice().multiply(new BigDecimal(item.getQty())));body.append(" </td>");body.append(" </tr> ");});body.append(" </table>");MailUtil.send(account,"需要发送的Email","天上人间提醒您请对采购单审核-"+ poMaster.getId(),body.toString(),true);}

手机信息

public Integer sendTel(String tel) {//发送信息调用地址String url="https://dfsns.market.alicloudapi.com/data/send_sms";//请求放法String method = "POST";//我的appcode号String appcode = "eb666bd7a6474c37aee78f8fe886a763";int code = RandomUtil.randomInt(1000, 10000);TelMap.put(tel,code);String result = HttpRequest.post(url).header("Authorization", "APPCODE "+appcode)//头信息,多个头信息多次调用此方法即可.body("content=code:"+code+"&template_id=TPL_0000&phone_number="+tel).execute().body();JSONObject entries = JSONUtil.parseObj(result);if(!entries.get("status").equals("OK")){throw new BizException(401,"验证码发送失败");}return 0;}

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

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

相关文章

Ugee手写板Ex08 S在不同软件中的设置

手写笔的结构 功能对应于鼠标的作用笔尖鼠标左键上面第一个键鼠标右键&#xff08;效果有时候也不完全等同&#xff09;上面第二个键鼠标中键 以下测试的软件版本 软件版本windows10WPS2024春季16729Office2007SimpleTex0.2.5Ex08 S驱动版本4.2.4.231109 WPS-word ①点击审…

《R语言与农业数据统计分析及建模》学习——创建与访问数据框

1、数据框的概念和特点 数据框是二维的表格形式数据结构&#xff0c;是R语言中最常用的数据结构之一。有如下特点&#xff1a; &#xff08;1&#xff09;异质性&#xff1a;各列不同的数据类型 &#xff08;2&#xff09;命名索引&#xff1a;每列都有一个名称 &#xff08;3&…

开源Windows12网页版HTML源码

源码介绍 开源Windows12网页版HTML源码&#xff0c;无需安装就能用的Win12网页版来了Windows12概念版&#xff08;PoweredbyPowerPoint&#xff09;后深受启发&#xff0c;于是通过使用HTML、CSS、js等技术做了这样一个模拟板的Windows12系统&#xff0c;并已发布至github进行…

go并发编程以及socket通信的理解

go并发编程以及socket通信的理解 文章目录 go并发编程以及socket通信的理解一、管道的简单使用二、go中的socket实现通信 一、管道的简单使用 " golang不是通过共享内存来通信&#xff0c;而是通过通信来共享内存 " 1、go简单初始化 // golang不是通过共享内存来通…

蓝桥杯2024年第十五届省赛真题-小球反弹

以下两个解法感觉都靠谱&#xff0c;并且网上的题解每个人答案都不一样&#xff0c;目前无法判断哪个是正确答案。 方法一&#xff1a;模拟 代码参考博客 #include <iostream> #include <cmath> #include <vector>using namespace std;int main() {const i…

(二十)C++自制植物大战僵尸游戏僵尸进攻控制实现

植物大战僵尸游戏开发教程专栏地址http://t.csdnimg.cn/8UFMs 文件位置 实现功能的代码文件位置在Class\Scenes\GameScene文件夹中&#xff0c;具体如下图所示。 ZombiesAppearControl.h /* 僵尸出现波数控制 */ class ZombiesAppearControl { public:/***对于进攻的不同波数…

【吊打面试官系列】Java高并发篇 - 如何停止一个正在运行的线程?

大家好&#xff0c;我是锋哥。今天分享关于 【如何停止一个正在运行的线程&#xff1f;】面试题&#xff0c;希望对大家有帮助&#xff1b; 如何停止一个正在运行的线程&#xff1f; java如何停止一个正在运行的线程? 在Java中&#xff0c;可以使用Thread.stop()方法来停止一…

Android自带模拟器如何获得ROOT权限

如果在模拟器中不能切换到root权限&#xff0c;很可能是镜像使用的不对。 一.选择镜像标准&#xff1a; 1.运行在PC端选X86_64镜像&#xff0c;才能流畅运行 2.不带google api的镜像 二.步骤 在虚拟机管理器中新建AVD&#xff0c;并下载符合要求的镜像文件 三.验证

【MATLAB】App 设计 (入门)

设计APP 主界面 函数方法 定时器 classdef MemoryMonitorAppExample < matlab.apps.AppBase% Properties that correspond to app componentsproperties (Access public)UIFigure matlab.ui.FigureStopButton matlab.ui.control.ButtonStartButton matlab.ui.cont…

大模型ChatGPT里面的一些技术和发展方向

文章目录 如何炼成ChatGPT如何调教ChatGPT如何武装ChatGPT一些大模型的其他方向 这个是基于视频 https://www.bilibili.com/video/BV17t4218761&#xff0c;可以了解一下大模型里面的一些技术和最近的发展&#xff0c;基本都是2022你那以来的发展&#xff0c;比较新。然后本文…

SpringMVC 异常没有处理,发送 /error 请求(404 错误)

现象&#xff1a; 在过滤器中进行鉴权时候抛出了异常&#xff0c;此时客户端会收到 404 错误&#xff0c;接口确定是存在&#xff0c;为什么会收到 404 错误呢&#xff1f; {"timestamp": "2024-04-16T03:12:19.83200:00","status": 404,"…

最新版的GPT-4.5-Turbo有多强

OpenAI再次用实力证明了&#xff0c;GPT依然是AI世界最强的玩家&#xff01;在最新的AI基准测试中&#xff0c;OpenAI几天前刚刚发布的GPT-4-Turbo-2024-04-09版本&#xff0c;大幅超越了Claude3 Opus&#xff0c;重新夺回了全球第一的AI王座&#xff1a; 值得一提的是&#xf…

C++ 模板详解——template<class T>

一. 前言 在我们学习C时&#xff0c;常会用到函数重载。而函数重载&#xff0c;通常会需要我们编写较为重复的代码&#xff0c;这就显得臃肿&#xff0c;且效率低下。重载的函数仅仅只是类型不同&#xff0c;代码的复用率比较低&#xff0c;只要有新类型出现时&#xff0c;就需…

LeetCode 34在排序数组中查找元素的第一个和最后一个位置

LeetCode 34在排序数组中查找元素的第一个和最后一个位置 给你一个按照非递减顺序排列的整数数组nums&#xff0c;和一个目标值target。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值target&#xff0c;返回 [-1, -1]。 你必须设计并实现时间复…

文章解读与仿真程序复现思路——电力自动化设备EI\CSCD\北大核心《考虑碳市场风险的热电联产虚拟电厂低碳调度》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

【.net core】【sqlsugar】批量更新方法

官方文档&#xff1a;单表更新、更新数据 - SqlSugar 5x - .NET果糖网 泛型类中增加 //更新单个实体 public async Task<int> Update(TEntity entity) {//IgnoreColumns(ignoreAllNullColumns: true)&#xff1a;忽略设置为跳过的列return await _db.Updateable(entity…

Java作业6-Java类的基本概念三

编程1 import java.util.*;abstract class Rodent//抽象类 {public abstract String findFood();//抽象方法public abstract String chewFood(); } class Mouse extends Rodent {public String findFood(){ return "大米"; }public String chewFood(){ return "…

IDEA 编码格式设置 UTF-8

IDEA 编码格式设置 UTF-8 1.文件编码设置为UTF-8 Editor > File Encodings 2.编译编码设置为utf-8 Build&#xff0c;Execution&#xff0c;Deployment > Complier > Java Complier 按图中设置&#xff1a;-encoding utf-8

【数学建模】钻井问题

已知 12口井的坐标位置如下: x[0.50,1.41,3.00,3.37,3.40,4.72,4.72,5.43,7.57,8.38,8.98, 9.50]; y[2.00,3.50,1.50,3.51,5.50,2.00,6.24,4.10,2.01,4.50,3.41,0.80];设平面有n个点 P i P_i Pi​(表旧井井位),其坐标为 ( a i , b i ) , i 1 , 2 , … , n (a_i,b_i),i1,2,…,…

嵌入式学习57-ARM7(字符设备驱动框架led)

kernel 内核 printk 内核打印 cat /proc/devices mknod ? 查看指令 gcc -oapp hello.c