package com.example.semd_Msg;
import cn.hutool.core.util.RandomUtil;
import org.junit.Test;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Properties;
import java.util.*;
@SpringBootApplication
public class SemdMsgApplication {
public static byte[] ImageToBase64ByLocal(String imgFile) {// 将图片文件转化为字节数组字符串,并对其进行Base64编码处理
InputStream in = null;
byte[] data = null;
// 读取图片字节数组
try {
in = new FileInputStream(imgFile);
data = new byte[in.available()];
in.read(data);
in.close();
} catch (IOException e) {
e.printStackTrace();
}
// 对字节数组Base64编码
//String base64encodedString = Base64.getEncoder().encodeToString(data);
return data;// 返回Base64编码过的字节数组字符串
}
public static String generateFilePath(String fileName){
//根据日期生成路径 2022/1/15/
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd/");
String datePath = sdf.format(new Date());
//uuid作为文件名
String uuid = UUID.randomUUID().toString().replaceAll("-", "");
//后缀和文件后缀一致
int index = fileName.lastIndexOf(".");
// test.jpg -> .jpg
String fileType = fileName.substring(index);
return new StringBuilder().append(datePath).append(uuid).append(fileType).toString();
}
@Test
public void qiniu_oss() throws IOException { //七牛云上传
InputStream inputStream = this.getClass().getResourceAsStream("/application.properties");
Properties properties = new Properties();
properties.load(inputStream);
properties.list(System.out);
// System.out.println("==============================================");
// String property = properties.getProperty("qiniu.oss.accessKey");
// System.out.println("property = " + property);
String accessKey=properties.getProperty("qiniu.oss.accessKey");
String secretKey=properties.getProperty("qiniu.oss.secretKey");
String bucket=properties.getProperty("qiniu.oss.bucket");
String region=properties.getProperty("qiniu.oss.region");
//System.out.println(region);
QiniuUtils upload=new QiniuUtils(accessKey,secretKey,bucket,region);
byte imgstr[]= ImageToBase64ByLocal("C:\\Users\\Administrator\\Desktop\\1709880952768.png");
//System.out.printf(imgstr);
// String newName = generateFilePath("52768.png"); //"\cc\\"+System.currentTimeMillis() + "_" + "52768.png";
// String data=upload.upload2Qiniu(imgstr,newName); //上传文件流
// System.out.printf(data);
// String data=upload.upload2Qiniu("123","1.txt"); //上传文本
// System.out.printf(data);
// List<String> ss=upload.get_File_list(); //获取文件列表
// System.out.println(ss);
//
// if(upload.del_File("2024-03-13/148b877cc2814da3893b8e302ffa2808.png")){
// System.out.println("删除成功");
// }else{
// System.out.println("删除失败");
// }
}
@Test
public void ali_oss() throws IOException { //阿里云上传
InputStream inputStream = this.getClass().getResourceAsStream("/application.properties");
Properties properties = new Properties();
properties.load(inputStream);
properties.list(System.out);
// System.out.println("==============================================");
// String property = properties.getProperty("qiniu.oss.accessKey");
// System.out.println("property = " + property);
String bucketName=properties.getProperty("aliyun.oss.bucketName");
String endpoint=properties.getProperty("aliyun.oss.endpoint");
String accessKeyId=properties.getProperty("aliyun.oss.accessKeyId");
String accessKeySecret=properties.getProperty("aliyun.oss.accessKeySecret");
byte imgstr[]= ImageToBase64ByLocal("C:\\Users\\Administrator\\Desktop\\1709880952768.png");
//System.out.printf(imgstr);
AliOssUtils aliOssUtil=new AliOssUtils(bucketName,endpoint,accessKeyId,accessKeySecret);
String vv=aliOssUtil.upload(imgstr,generateFilePath("52768.png")); //上传图片
System.out.println(vv);
// byte[] uploadBytes = "12343455566666".getBytes("utf-8");
// String vv=aliOssUtil.upload(uploadBytes,generateFilePath("52768.txt")); //上传文本
// System.out.println(vv);
List<String> file_list =aliOssUtil.get_File_list();
System.out.println(file_list);
if(aliOssUtil.del_File("2024-03-13/15b7172404534ed084f023f7170a5452.png")){
System.out.println("删除成功");
}else{
System.out.println("删除失败");
}
}
@Test
public void mail() throws IOException { //发送邮件
InputStream inputStream = this.getClass().getResourceAsStream("/application.properties");
Properties properties = new Properties();
properties.load(inputStream);
properties.list(System.out);
// System.out.println("==============================================");
String setHost=properties.getProperty("mail.setHost");
String setPort=properties.getProperty("mail.setPort");
String setFrom=properties.getProperty("mail.setFrom");
String setUser=properties.getProperty("mail.setUser");
String setPass=properties.getProperty("mail.setPass");
SendMailUtils sendMailUtils=new SendMailUtils(setHost,Integer.valueOf(setPort),true,setFrom,setUser,setPass);
sendMailUtils.send_Mail("7650371@qq.com","标题","内容",false);
}
@Test
public void telsms() throws IOException { //短信验证码
int code = RandomUtil.randomInt(1000,10000);
AilSmsUtils.send_code("f4c8c19506d1caf13","CST_ptdie100", "185957", String.valueOf(code));
}
@Test
public void dingtalk() throws IOException { //钉钉消息
String access_token="9b8c0127fe7c9d4495945a3b2f321cf5f56";
String msgtype="markdown";
String title="111益达律师所邀请您审核采购单";
String content="看编号:的订单 ![screenshot](https://pic.3gbizhi.com/uploads/20231129/0750e85fa5fd97e19dfb879770d7f7db.jpg)";
AilDingtalkUtils.send_text_msg(access_token,msgtype,title,content);
}
public static void main(String[] args) throws IOException {
//SpringApplication.run(SemdMsgApplication.class, args);
//发送验证码
}
}
#七牛云存储
qiniu.oss.accessKey:MZCNLPwdrNY8
qiniu.oss.secretKey:RcFIFatRj9VWlw1qQB6LPo
qiniu.oss.bucket:xiaos
qiniu.oss.region:huado
# 配置阿里云OSS
aliyun.oss.bucketName:xiaos
aliyun.oss.endpoint:oss-cn-shenzhen.aliyuncs.com
aliyun.oss.accessKeyId:LTAI5tFY7Fynyh
aliyun.oss.accessKeySecret:utyuE1SWCSQC
#配置邮件服务器
mail.setHost:smtp.aliyun.com
mail.setPort:25
mail.setFrom:QQ71@aliyun.com
mail.setUser:QQ71@aliyun.com
mail.setPass:Pl12@
package com.example.semd_Msg;
import cn.hutool.http.HttpRequest;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
//钉钉群消息推送
//https://open.dingtalk.com/document/robots/custom-robot-access
public class AilDingtalkUtils {
public static boolean send_text_msg(String access_token, String msgtype,String title,String content)
{
String url="https://oapi.dingtalk.com/robot/send?access_token="+access_token;
JSONObject js = new JSONObject();
js.set("msgtype",msgtype); //"markdown"
js.set("markdown",new JSONObject().set("title",title).set("text",content));
// js.set("at",new JSONObject().set("atMobiles",new JSONArray().set("15639216172")));
js.set("at",new JSONObject().set("isAtAll",true));
String s = JSONUtil.toJsonStr(js);
String result = HttpRequest.post(url).body(s).execute().body();
System.out.printf(result);
JSONObject object = JSONUtil.parseObj(result);
if(object.get("errmsg").equals("ok")){
return true;
}
return false;
}
}
package com.example.semd_Msg;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.extra.mail.MailUtil;
import cn.hutool.http.HttpRequest;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
public class AilSmsUtils {
public static boolean send_code(String appcode,String template_id, String tel,String code) {
try {
String url = "https://dfsns.market.alicloudapi.com/data/send_sms";
//String appcode = "363efa0e07bb4c368b05f500db153ec5";
//int code = RandomUtil.randomInt(1000,10000);
String result = HttpRequest.post(url)
.header("Authorization", "APPCODE "+appcode)
.body("content=code:"+code+"&template_id="+template_id+"&phone_number="+tel)
.execute().body();
JSONObject object = JSONUtil.parseObj(result);
if(!object.get("status").equals("OK")){
//log.error("发送验证码错误:{}",object.get("reason"));
System.out.printf("发送验证码错误:{}",object.get("reason"));
//throw new BizException(404,"发送验证码错误");
return false;
}
return true;
} catch (Exception ce) {return false;}
}
}
package com.example.semd_Msg;
import com.google.gson.Gson;
import com.qiniu.common.QiniuException;
import com.qiniu.common.Zone;
import com.qiniu.http.Response;
import com.qiniu.storage.BucketManager;
import com.qiniu.storage.Configuration;
import com.qiniu.storage.Region;
import com.qiniu.storage.UploadManager;
import com.qiniu.storage.model.DefaultPutRet;
import com.qiniu.storage.model.FileInfo;
import com.qiniu.util.Auth;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
/**
* 七牛云工具类
*/
public class QiniuUtils {
public String accessKey;
public String secretKey;
public String bucket;
//构造一个带指定 Region 对象的配置类
public Configuration cfg;
//https://developer.qiniu.com/kodo/1239/java#rs-list
public QiniuUtils( String accessKey, String secretKey, String bucket,String region) {
this.accessKey = accessKey;
this.secretKey = secretKey;
this.bucket = bucket;
// 华东 Region.region0(), Region.huadong()
// 华北 Region.region1(), Region.huabei()
// 华南 Region.region2(), Region.huanan()
// 北美 Region.regionNa0(), Region.beimei()
// 东南亚 Region.regionAs0(), Region.xinjiapo()
if (region=="") {
if (region == "huadong") {
this.cfg = new Configuration(Region.huadong());
}
if (region == "huabei") {
this.cfg = new Configuration(Region.huabei());
}
if (region == "huanan") {
this.cfg = new Configuration(Region.huanan());
}
if (region == "beimei") {
this.cfg = new Configuration(Region.beimei());
}
if (region == "xinjiapo") {
this.cfg = new Configuration(Region.xinjiapo());
}
}else{
this.cfg = new Configuration(Region.huadong());
}
this.cfg.resumableUploadAPIVersion = Configuration.ResumableUploadAPIVersion.V2;// 指定分片上传版本
this.cfg.resumableUploadMaxConcurrentTaskCount = 2; // 设置分片上传并发,1:采用同步上传;大于1:采用并发上传
}
public String upload2Qiniu(String filePath, String fileName){
try {
//...其他参数参考类注释
UploadManager uploadManager = new UploadManager(this.cfg);
byte[] uploadBytes = filePath.getBytes("utf-8");
Auth auth = Auth.create(this.accessKey, this.secretKey);
String upToken = auth.uploadToken(this.bucket);
try {
Response response = uploadManager.put(uploadBytes, fileName, upToken);
//解析上传成功的结果
DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
//System.out.println(putRet.key);
//System.out.println(putRet.hash);
return putRet.key;
} catch (QiniuException ex) {
ex.printStackTrace();
if (ex.response != null) {
System.err.println(ex.response);
try {
String body = ex.response.toString();
System.err.println(body);
} catch (Exception ignored) {
}
}
}
} catch (Exception ex) {
//ignore
}
return "";
}
//上传文件
public String upload2Qiniu(byte[] bytes, String fileName){
try {
//...其他参数参考类注释
UploadManager uploadManager = new UploadManager(this.cfg);
//默认不指定key的情况下,以文件内容的hash值作为文件名
String key = fileName;
Auth auth = Auth.create(this.accessKey, this.secretKey);
String upToken = auth.uploadToken(this.bucket);
try {
Response response = uploadManager.put(bytes, key, upToken);
//解析上传成功的结果
DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
// System.out.println(putRet.key);
// System.out.println(putRet.hash);
return putRet.key;
} catch (QiniuException ex) {
ex.printStackTrace();
if (ex.response != null) {
System.err.println(ex.response);
try {
String body = ex.response.toString();
System.err.println(body);
} catch (Exception ignored) {
}
}
}
} catch (Exception ex) {
//ignore
}
return "";
}
public List<String> get_File_list(){
List<String> file_list = new ArrayList<String>();
try {
//文件名前缀
String prefix = "";
//每次迭代的长度限制,最大1000,推荐值 1000
int limit = 1000;
//指定目录分隔符,列出所有公共前缀(模拟列出目录效果)。缺省值为空字符串
String delimiter = "";
//列举空间文件列表
//默认不指定key的情况下,以文件内容的hash值作为文件名
Auth auth = Auth.create(this.accessKey, this.secretKey);
BucketManager bucketManager = new BucketManager(auth, this.cfg);
BucketManager.FileListIterator fileListIterator = bucketManager.createFileListIterator(bucket, prefix, limit, delimiter);
while (fileListIterator.hasNext()) {
//处理获取的file list结果
FileInfo[] items = fileListIterator.next();
for (FileInfo item : items) {
file_list.add(item.key);
// System.out.println("--------------");
// System.out.println(item.key);
// System.out.println(item.hash);
// System.out.println(item.fsize);
// System.out.println(item.mimeType);
// System.out.println(item.putTime);
// System.out.println(item.endUser);
}
}
} catch (Exception ex) {
}
return file_list;
}
//删除文件
public boolean del_File(String fileName){
String key = fileName;
Auth auth = Auth.create(this.accessKey, this.secretKey);
BucketManager bucketManager = new BucketManager(auth, this.cfg);
try {
bucketManager.delete(this.bucket, key);
return true;
} catch (QiniuException ex) {
//如果遇到异常,说明删除失败
System.err.println(ex.code());
System.err.println(ex.response.toString());
return false;
}
}
}
package com.example.semd_Msg;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.extra.mail.MailAccount;
import cn.hutool.extra.mail.MailUtil;
import com.aliyun.oss.ClientException;
public class SendMailUtils {
private MailAccount account;
public SendMailUtils(String setHost,Integer setPort, boolean setAuth, String setFrom, String setUser, String setPass) {
account = new MailAccount();
account.setHost(setHost); //邮件服务器的SMTP地址,可选,默认为smtp.<发件人邮箱后缀>
account.setPort(setPort); //邮件服务器的SMTP端口,可选,默认25
account.setAuth(setAuth);
account.setFrom(setFrom); //发件人(必须正确,否则发送失败)
account.setUser(setUser); //用户名,默认为发件人邮箱前缀
account.setPass(setPass); //密码(注意,某些邮箱需要为SMTP服务单独设置授权码,详情查看相关帮助)
}
public boolean send_Mail(String to, String title, String content,boolean isHtml) {
try {
String success=MailUtil.send(account, CollUtil.newArrayList(to), title, content, isHtml);
return true;
} catch (Exception ce) {}
return false;
}
}