600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 采用SpringBoot发送简单 抄送 密送 带附件邮件

采用SpringBoot发送简单 抄送 密送 带附件邮件

时间:2020-10-18 15:03:07

相关推荐

采用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=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)实现邮件发送方法

@Servicepublic 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 发送的邮件内容包含了未被许可的信息,或被系统识别为垃圾邮件。请检查是否有用户发送病毒或者垃圾邮件。目前,我还没有找到有效的解决方法,希望知道的大佬可以告诉我。

最后,文章若是有不对的地方,欢迎指出,谢谢。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。