前言: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发送简单、抄送、密送、带附件邮件相关推荐

  1. SpringBoot简单/带附件邮件发送

    话不多说,直接上代码吧. 1.引入依赖 <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot- ...

  2. python邮件发送csv附件_Python2.7 smtplib发送带附件邮件报错STARTTLS解决方法

    最近在SIOMP系统中添加一项功能时,即自动发送带附件邮件到指定邮箱时,发现在发送时报错:错误信息:STARTTLS extension not supported by server.很是奇怪,但发 ...

  3. python3发送邮件_Python3使用SMTP发送带附件邮件

    一.设置开启SMTP服务并获取授权码 可以参考第一篇文章,这里不再赘述:[一]https://www.jb51.net/article/142220.htm 二.使用Python3 发送带附件的邮件 ...

  4. Python 发送邮件 和 发送带附件邮件

    摘要:      平时运行一些脚本,需要把结果发送到邮箱,可以用python来处理,如下: 1,有邮件服务器: #!/bin/env python # -*- encoding: utf-8 -*- ...

  5. java发送邮件,多人单人发送,抄送,密送,附件

    使用下面的代码发送邮件,需要下载包finereport-1.6.5.jar. 可以发送.抄送.密送多人,多个邮箱之间用逗号分隔",",英文的逗号,不要又空格. 写一个用于密码校验的 ...

  6. 邮件群发之一封邮件发给多个收件人?抄送密送设置

    有的发件箱限制登陆次数只能用几次,那么一次发送多个邮箱地址可以大大提高发送量和速度,伯勒邮件群发机,支持一次一封邮件发送多送多个邮箱地址.首先搞明白这几点: 单次发送(To): 收件人 抄送邮件(CC ...

  7. 使用springboot发送带附件邮件(465端口加密邮件)

    一.开启SMTP服务 二.编码 1.加依赖(pom.xml) <dependency><groupId>org.springframework.boot</groupId ...

  8. python中带附件发送电子邮件_python发送带附件邮件

    Python SMTP发送邮件 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式. py ...

  9. 实现Spring Boot 定时发送带附件邮件功能

    文章目录 版本说明: 1.pom依赖 2.配置 3.通过EasyExcel 将数据导出为Excel 4.发送邮件 5.定时功能 6.常用邮箱的服务器(SMTP/POP3)地址和端口总结 版本说明: s ...

最新文章

  1. 高通与苹果宣布“复合”,英特尔黯然退场 | 极客头条
  2. 图像拼接--Creating full view panoramic image mosaics and environment maps
  3. python编程入门经典教程-2020年5个经典python编程入门视频教程推荐学习
  4. 基于Leaflet和GraphHopper实现离线路径规划
  5. 不用公钥批量部署机器执行命令_模版
  6. Java实现向指定URL用POST方法发送Json格式字符串参数请求的工具类
  7. 你需要XXX的权限对此文件(此文件夹进行)修改
  8. 【Maven实用技巧】03. Maven 编译打包时如何忽略测试用例
  9. 数据结构前缀,后缀,中缀表达式
  10. App 运营的指标具体都有哪些?
  11. debian+apache+acme_tiny+lets-encrypt配置笔记
  12. GitLab 公开拒收中国员工,你怎么看?!
  13. 腾讯痛下杀手,是时候让区块链回归技术和应用的本质了!
  14. Ubuntu设置静态IP/网关
  15. 强推WordPress里的一款代码高亮插件——EnlighterJS
  16. Java排序算法之插入排序(图文描述)
  17. IP子网划分的原理及应用
  18. java回复功能_Java实现评论回复功能
  19. 市场、运营、销售什么区别?
  20. 计算机主机号是什么意思,在一台计算机的IP地址中,网络号和主机号指的是什么?...

热门文章

  1. 降噪、音质、游戏,实力非凡,泥炭Air3 Pro降噪耳机评测
  2. win10设置了睡眠时间,但两分钟无操作仍然黑屏。解决办法
  3. 部署Python的框架下的web app的详细教程
  4. 【Unity实战100例】Unity屏幕画线,Unity屏幕画图HSJ绘画工具
  5. 无心剑中译伊丽莎白·毕肖普《一门技艺》
  6. php匹配字符串中的url并替换为超链接
  7. 如何从外网访问校园内网
  8. openwrt 19 overlay 空间不足_顺职院学生宿舍空间布局改善报告
  9. Whitelabel Error Page 的原因
  10. TeamViewer的LAN局域网内连接