當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
SpringBoot的email发送ssl协议格式
生活随笔
收集整理的這篇文章主要介紹了
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协议格式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 京东物流第三季度营收417亿元,净利润同
- 下一篇: ECharts的点击事件