采用SpringBoot发送简单、抄送、密送、带附件邮件
前言:JavaMail发送邮件的形式多种多样,有简单、抄送、密送、带附件邮件等。
1. 业务需求
实现邮件的简单、抄送、密送和带附件发送四种方式。
2. 实现步骤
在这里,我使用QQ邮箱作为测试(网易邮箱的设置方式和此类似)。
1)开启QQ邮箱的第三方登录
2)引入依赖
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId>
</dependency>
3)添加邮件设置信息
spring.mail.host=smtp.qq.com
spring.mail.username=QQ邮箱
spring.mail.password=授权码
spring.mail.default-encoding=UTF-8
4)添加邮件发送接口
@PostMapping(value = "/v1/send/{subject}", name = "发送邮件信息", produces = "application/json;charset=UTF-8")public boolean sendEmail(@PathVariable("subject")String subject, String text, String[] addressee,String[] cc, String[] bcc, MultipartFile[] files) throws IOException, MessagingException {return emailService.sendEmail(addressee, cc, bcc, subject, text, files);}
5)实现邮件发送方法
@Service
public class EmailServiceImpl implements IEmailService {@Autowiredprivate JavaMailSender mailSender;/** 设置发信人 */@Value("${spring.mail.username}")private String sender;@Overridepublic boolean sendEmail(String[] addressee, String[] cc, String[] bcc, String subject,String text, MultipartFile[] files) throws IOException {/** 接收附件的临时文件信息 */List<String> paths = new ArrayList<>();try {MimeMessage mimeMessage = mailSender.createMimeMessage();/** true代表多组件,如附件、图片等 */MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);helper.setFrom(sender);helper.setTo(addressee);helper.setSubject(subject);helper.setText(text);/** 抄送 */if (cc != null && cc.length > 0) {helper.setCc(cc);}/** 密送 */if (bcc != null && bcc.length > 0) {helper.setBcc(bcc);}/** 添加附件 */if (files != null && files.length > 0) {for (MultipartFile file : files) {InputStream inputStream = file.getInputStream();File tmp = new File(file.getOriginalFilename());IOUtil.inputStreamToFile(inputStream, tmp);FileSystemResource resource = new FileSystemResource(tmp);helper.addAttachment(file.getOriginalFilename(), resource);/** 保存临时附件信息 */paths.add(tmp.getAbsolutePath());}}mailSender.send(mimeMessage);/** 邮件发送成功,删除临时附件 */for (String path : paths){File file = new File(path);if (file.exists() && !file.isDirectory()){file.delete();}}} catch (Exception e) {/** 邮件发送失败 ,保留临时附件地址,方便重发该邮件*/e.printStackTrace();}return true;}
}
补充:当抄送、密送、附件数组都没有数据时即为简单发送。
3. 总结
由于QQ邮箱和网易邮箱的不,在用QQ邮箱进行测试时,会顺畅点,基本都发送成功;当用网易邮箱进行抄送、密送、带附件发送邮件时,会报554 DT:SPM 发送的邮件内容包含了未被许可的信息,或被系统识别为垃圾邮件。请检查是否有用户发送病毒或者垃圾邮件。目前,我还没有找到有效的解决方法,希望知道的大佬可以告诉我。
最后,文章若是有不对的地方,欢迎指出,谢谢。
采用SpringBoot发送简单、抄送、密送、带附件邮件相关推荐
- SpringBoot简单/带附件邮件发送
话不多说,直接上代码吧. 1.引入依赖 <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot- ...
- python邮件发送csv附件_Python2.7 smtplib发送带附件邮件报错STARTTLS解决方法
最近在SIOMP系统中添加一项功能时,即自动发送带附件邮件到指定邮箱时,发现在发送时报错:错误信息:STARTTLS extension not supported by server.很是奇怪,但发 ...
- python3发送邮件_Python3使用SMTP发送带附件邮件
一.设置开启SMTP服务并获取授权码 可以参考第一篇文章,这里不再赘述:[一]https://www.jb51.net/article/142220.htm 二.使用Python3 发送带附件的邮件 ...
- Python 发送邮件 和 发送带附件邮件
摘要: 平时运行一些脚本,需要把结果发送到邮箱,可以用python来处理,如下: 1,有邮件服务器: #!/bin/env python # -*- encoding: utf-8 -*- ...
- java发送邮件,多人单人发送,抄送,密送,附件
使用下面的代码发送邮件,需要下载包finereport-1.6.5.jar. 可以发送.抄送.密送多人,多个邮箱之间用逗号分隔",",英文的逗号,不要又空格. 写一个用于密码校验的 ...
- 邮件群发之一封邮件发给多个收件人?抄送密送设置
有的发件箱限制登陆次数只能用几次,那么一次发送多个邮箱地址可以大大提高发送量和速度,伯勒邮件群发机,支持一次一封邮件发送多送多个邮箱地址.首先搞明白这几点: 单次发送(To): 收件人 抄送邮件(CC ...
- 使用springboot发送带附件邮件(465端口加密邮件)
一.开启SMTP服务 二.编码 1.加依赖(pom.xml) <dependency><groupId>org.springframework.boot</groupId ...
- python中带附件发送电子邮件_python发送带附件邮件
Python SMTP发送邮件 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式. py ...
- 实现Spring Boot 定时发送带附件邮件功能
文章目录 版本说明: 1.pom依赖 2.配置 3.通过EasyExcel 将数据导出为Excel 4.发送邮件 5.定时功能 6.常用邮箱的服务器(SMTP/POP3)地址和端口总结 版本说明: s ...
最新文章
- 高通与苹果宣布“复合”,英特尔黯然退场 | 极客头条
- 图像拼接--Creating full view panoramic image mosaics and environment maps
- python编程入门经典教程-2020年5个经典python编程入门视频教程推荐学习
- 基于Leaflet和GraphHopper实现离线路径规划
- 不用公钥批量部署机器执行命令_模版
- Java实现向指定URL用POST方法发送Json格式字符串参数请求的工具类
- 你需要XXX的权限对此文件(此文件夹进行)修改
- 【Maven实用技巧】03. Maven 编译打包时如何忽略测试用例
- 数据结构前缀,后缀,中缀表达式
- App 运营的指标具体都有哪些?
- debian+apache+acme_tiny+lets-encrypt配置笔记
- GitLab 公开拒收中国员工,你怎么看?!
- 腾讯痛下杀手,是时候让区块链回归技术和应用的本质了!
- Ubuntu设置静态IP/网关
- 强推WordPress里的一款代码高亮插件——EnlighterJS
- Java排序算法之插入排序(图文描述)
- IP子网划分的原理及应用
- java回复功能_Java实现评论回复功能
- 市场、运营、销售什么区别?
- 计算机主机号是什么意思,在一台计算机的IP地址中,网络号和主机号指的是什么?...