SpringBoot的email发送ssl协议格式
yml文件
Controller内容
package com.bam.controller;import com.hbyh.bam.dto.RespBean;
import com.hbyh.bam.model.Mail;
import com.hbyh.bam.service.MailService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;import java.util.ArrayList;@Api(tags = "邮件发送")
@RestController
@RequestMapping("/email")
public class EmailController {@Autowiredprivate MailService mailService;public static String TEMPATH = "/war/template";@PostMapping("/toEmail/{email}")@ResponseBody@ApiOperation(value = "发送邮件")public RespBean toEmail(@RequestParam("file") MultipartFile multipartFile,String body,@PathVariable String email){Mail mail=new Mail();mail.setSubject("标题名"); //标题名mail.setPersonal("发送人名称"); //发送人名称mail.setContent(body);int num=mailService.saveFile(mail,email,multipartFile);if(num<=0){return RespBean.goBack(1,"发送失败,请重试");}else{return RespBean.goBack(0,"已发送");}}
}
MailService类
package com.bam.service;import java.util.List;import com.hbyh.bam.model.Mail;
import org.springframework.web.multipart.MultipartFile;public interface MailService {int saveFile(Mail mail, String toUser, MultipartFile multipartFile);}
MailServiceImpl实现类
package com.bam.service.impl;import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;import com.hbyh.bam.controller.EmailController;
import com.hbyh.bam.service.SendMailSevice;
import com.hbyh.bam.utils.IdWorker;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;import com.hbyh.bam.dao.MailDao;
import com.hbyh.bam.model.Mail;
import com.hbyh.bam.service.MailService;
import com.hbyh.bam.utils.UserUtil;
import org.springframework.web.multipart.MultipartFile;@Service
public class MailServiceImpl implements MailService {@Autowiredprivate SendMailSevice sendMailSevice;@Autowiredprivate MailDao mailDao;@Autowiredprivate IdWorker idWorker;@Transactionalpublic int saveFile(Mail mail, String toUser,MultipartFile multipartFile) {int status = 0;try {//获取文件File file = MultiToFile(multipartFile);sendMailSevice.sendMailFile(toUser, mail.getSubject(), mail.getContent(),mail.getPersonal(),file);status=1;} catch (Exception e) {log.error("发送邮件失败", e);status = -1;}return status;}/*** 将multipartFile文件转为File文件*/public File MultiToFile(MultipartFile multipartFile) {if(multipartFile==null){return null;}//获取file名字String filename = multipartFile.getOriginalFilename();//获取文件后缀String suffix = filename.substring(filename.lastIndexOf("."));//创建一个不重名的文件String employeesId = idWorker.nextId() + "";File file = new File(EmailController.TEMPATH+"/"+employeesId+suffix);try {//输入流InputStream ins=multipartFile.getInputStream();//输出流OutputStream os = new FileOutputStream(file);int bytesRead = 0;byte[] buffer = new byte[8192];while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) {os.write(buffer, 0, bytesRead);//开始写}os.close();ins.close();} catch (Exception e){file=null;e.printStackTrace();}return file;}}
Mail实体类
package com.bam.model;public class Mail {private String toUsers;private String subject;private String content;private String personal;
}
SendMailSevice类
package com.bam.service;import javax.mail.MessagingException;
import java.io.File;
import java.io.UnsupportedEncodingException;
import java.util.List;public interface SendMailSevice {/*** * @param toUser 发送人* @param subject 标题* @param text 内容* @param personal 发送人名称* @param file 文件* @throws Exception*/void sendMailFile(String toUser, String subject, String text,String personal, File file) throws Exception;
}
SendMailSeviceImpl 实现类
package com.bam.service.impl;import com.hbyh.bam.service.SendMailSevice;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;
import java.io.UnsupportedEncodingException;@Service
public class SendMailSeviceImpl implements SendMailSevice {@Autowiredprivate JavaMailSender javaMailSender;@Value("${spring.mail.username}")private String serverMail;public void sendMailFile(String toUser, String subject, String text,String personal, File file) throws MessagingException, UnsupportedEncodingException {MimeMessage message = javaMailSender.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(message, true);helper.setFrom(serverMail,personal);helper.setTo(toUser);helper.setSubject(subject);helper.setText(text!=null?text:"", true);if(file!=null){//获取文件名称String filepathname=file.getName();//添加附件helper.addAttachment(filepathname, file);//附件}javaMailSender.send(message);}
}
MailSocketFactory配置类
package com.bam.config.email;
import javax.net.SocketFactory;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import java.io.IOException;
import java.net.InetAddress;
import java.net.Socket;
import com.bam.config.email.MailTrustManager;/*** email配置*/
public class MailSocketFactory extends SSLSocketFactory {private SSLSocketFactory factory;public MailSocketFactory() {try {SSLContext sslcontext = SSLContext.getInstance("TLS");sslcontext.init(null, new TrustManager[] { new MailTrustManager() }, null);factory = sslcontext.getSocketFactory();} catch (Exception ex) {// ignore}}public static SocketFactory getDefault() {return new MailSocketFactory();}@Overridepublic Socket createSocket() throws IOException {return factory.createSocket();}@Overridepublic Socket createSocket(Socket socket, String s, int i, boolean flag) throws IOException {return factory.createSocket(socket, s, i, flag);}@Overridepublic Socket createSocket(InetAddress inaddr, int i, InetAddress inaddr1, int j) throws IOException {return factory.createSocket(inaddr, i, inaddr1, j);}@Overridepublic Socket createSocket(InetAddress inaddr, int i) throws IOException {return factory.createSocket(inaddr, i);}@Overridepublic Socket createSocket(String s, int i, InetAddress inaddr, int j) throws IOException {return factory.createSocket(s, i, inaddr, j);}@Overridepublic Socket createSocket(String s, int i) throws IOException {return factory.createSocket(s, i);}@Overridepublic String[] getDefaultCipherSuites() {return factory.getDefaultCipherSuites();}@Overridepublic String[] getSupportedCipherSuites() {return factory.getSupportedCipherSuites();}
}
MailTrustManager配置类
package com.bam.config.email;
import javax.net.ssl.X509TrustManager;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
/*** email配置*/
public class MailTrustManager implements X509TrustManager {@Overridepublic void checkClientTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {}@Overridepublic void checkServerTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {}@Overridepublic X509Certificate[] getAcceptedIssuers() {return new X509Certificate[0];}
}
#####最后可以使用,此操作避免阿里云的25端口未开启,创建的ssl协议格式发送邮件,可批量发送附件
SpringBoot的email发送ssl协议格式相关推荐
- SSL、TLS协议格式入门学习
转载:http://www.tuicool.com/articles/rQjEzy3 原文 http://www.cnblogs.com/LittleHann/p/3733469.html 主题 S ...
- springboot集成邮箱配置ssl或tls协议
使用背景 一般基本配置邮箱,默认使用的端口为25端口,使用这个端口不需要我们去配置ssl或tls协议一般都能成功发送邮件.使用中会有一些服务器屏蔽禁用25端口,如阿里服务器.此时就需要切换端口为465 ...
- SpringBoot整合Email 邮件发送
文章目录 一.准备 二.邮件发送需要的配置 获取163邮箱授权码 获取QQ邮箱授权码 YML配置 三.代码编写 普通邮件发送 HTML邮件发送 含静态资源邮件发送 带附件邮件发送 SpringBoot ...
- 基于QT实现的SSL协议的安全报文发送接收设计
目录 一.设计方案及可行性分析 2 1.任务要求 2 2.设计方案 2 二.详细设计思路 4 1.系统体系结构及技术选择 4 2.关键数据类型的定义 6 3.关键程序流程图 7 1)发送方流程: 7 ...
- 阿里云服务器 通过JavaMail发送邮箱STMP问题( 25端口被禁用 使用SSL协议465端口)
我们传统使用的比较简单的是 STMP 25端口收发邮件 今天发现刚购买的阿里云服务器不能作为客户端通过STMP 25端口发送邮件 开始在网上有说发现是JDK1.8的原因,然后自己也把JDK1.8换到了 ...
- 阿里云服务器 通过JavaMail发送邮箱STMP问题( 25端口被禁用 使用SSL协议465端口
我们传统使用的比较简单的是 STMP 25端口收发邮件 今天发现刚购买的阿里云服务器不能作为客户端通过STMP 25端口发送邮件 开始在网上有说发现是JDK1.8的原因,然后自己也把JDK1.8换到了 ...
- Java技术:SpringBoot实现邮件发送功能
邮件发送功能基本是每个完整业务系统要集成的功能之一,今天小编给大家介绍一下SpringBoot实现邮件发送功能,希望对大家能有所帮助! 今天主要给大家分享简单邮件发送.HTML邮件发送.包含附件的邮件 ...
- SSL协议解析及SSL虚拟专用网
参考博客地址 目录 第一部分:SSL协议解析 一.SSL简介 二.SSL协议介绍 三.SSL协议应用 四.SSL协议特点 五.SSL协议结构分析 六.SSL连接建立过程(握手过程) 七.几个重要的se ...
- 简述ssl协议及利用openssl创建私有CA
我在这个链接中简单的介绍了下加密解密原理和相关算法及其实现:http://starli.blog.51cto.com/8813574/1671408 CA是什么?为什么需要CA? 先看下面的互联网安全 ...
最新文章
- R语言ggplot2可视化:为可视化图像添加多行标题(multi line title)并将多行标题居中对齐(center align)
- 神策数据:游戏买量与长线运营的数据宝典
- [原创]Retrofit使用教程(二)
- sql 简单加密函数
- __dopostback
- 第二百四十八天 how can I 坚持
- Python模块学习 ---- zlib 数据压缩
- 全网首发:FFMpeg使用NVIDIA DECODER,解码后的数据转换为YUV420P
- 区块链学习笔记25——总结
- MouseJack:利用15美元的工具和15行代码控制无线鼠标和键盘
- DenseBox: Unifying Landmark Localization with End to End Object Detection
- ssh 使用新法:公网(合法 ip)用户访问内网(私有 ip)服务器(http,ftp,sshd,cvs...),内网的朋友不妨一看。
- matlab numel x,试图访问 x(2);由于 numel(x)=1,索引超出范围。
- mysql如何收费,mysql收费吗
- LiveNVR直播拉流转码无插件直播流媒体服务如何配置视频流水印视频上面添加水印
- 网课学习第二天(第三天?)
- Excel-引用其它位置的数据和自动更新
- 提速降费的宽带和有线 想说爱你不容易
- 自定义Notification。多文字,或者图片等等。
- 怎样防止苹果系统更新_苹果 iOS 13.6 Beta 2 新增系统自定义自动更新开关