1.配置

导入依赖以及在yml中写好邮箱的配置信息

<dependency><groupId>javax.mail</groupId><artifactId>mail</artifactId><version>1.4.7</version></dependency>
 mail:host: smtp.exmail.qq.com   //QQ 邮件服务器 username: 用户名password: 密码properties.mail.smtp.port: 465from: 发件人邮箱properties.mail.smtp.starttls.enable: trueproperties.mail.smtp.starttls.required: trueproperties.mail.smtp.ssl.enable: truedefault-encoding: utf-8

2.获取自己的附件

这一步根据自己的业务代码获取需要发送邮件的附件文件,(流的格式)

ByteArrayOutputStream byteArrayOutputStream = fileUtilService.getFile(fileName);
//将获取的文件流转换为邮件service方法的参数ByteArrayInputStream格式
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());

3.文件名参数拼接

//发送的文件名为:`附件名称-20220101.pdf`
Calendar calendar = Calendar.getInstance();
StringBuilder timeString = new StringBuilder();timeString.append(“附件名称”);timeString.append("-");timeString.append(calendar.get(Calendar.YEAR));timeString.append(calendar.get(Calendar.MONTH)+1);timeString.append(calendar.get(Calendar.DATE));timeString.append(".pdf");

4.调用emailService发送邮件的方法

// 参数分别为: 发送邮箱,邮件主题,邮件正文,邮件名称,附件流
Boolean isSuccess = emailService.sendAttachmentsMail(getEmail(), EMAIL_SUBJECT,EMAIL_CONTENT_NAMEPREFIX + name + EMAIL_CONTENT,timeString.toString(), byteArrayResource);

5.发送邮箱业务层代码Impl

@Service
@Log
public class EmailServiceImpl implements EmailService,EmailRpcService {//静态代码块用于设置附件名编码和长度自动切割的问题,可以解决文件名后缀错误(***.bin)问题static {System.setProperty("mail.mime.splitlongparameters", "false");System.setProperty("mail.mime.charset", "UTF-8");}@Autowiredprivate JavaMailSender javaMailSender;//value注解读取yml文件的邮箱配置信息@Value("${spring.mail.from}")private String from;@Value("${spring.mail.host}")private String host;@Value("${spring.mail.username}")private String username;@Value("${spring.mail.password}")private String password;@Value("${spring.mail.properties.mail.smtp.port}")private String port;@Overridepublic void sendSimpleMail(String to, String subject, String content) {}@Overridepublic void sendHtmlMail(String to, String subject, String content) {}@Overridepublic Boolean sendAttachmentsMail(String to, String subject, String content,String fileName ,ByteArrayResource byteArrayResource) {log.info("==========================发送邮件==========================");MimeMessage message = javaMailSender.createMimeMessage();MimeMessageHelper messageHelper;try {messageHelper = new MimeMessageHelper(message,true,"utf-8");messageHelper.setFrom(from);messageHelper.setTo(to);messageHelper.setSubject(subject);messageHelper.setText(content,true);filePath.substring(filePath.lastIndexOf(File.separator))messageHelper.addAttachment(MimeUtility.encodeText(fileName,"utf-8","B"),byteArrayResource);javaMailSender.send(message);log.info("邮件发送成功!");return true;} catch (MessagingException e) {log.info("发送失败:"+e);return false;} catch (UnsupportedEncodingException e) {e.printStackTrace();log.info("发送失败:"+e);return false;}}

6.注意在emailService上的static静态代码块里的内容,这个是设置文件名编码和文件名分割内容的设置,挺必要的,因为我一开始写出来的时候,自己测试没有出现什么问题,当时也没有加这两行设置,但是测试人员测试的时候发现,文件名可能会因为文件名过长或者存在某些特殊字符使得最后邮件内附件的文件名不完全正确,后缀变成了乱码+.bin,造成文件打不开的原因。。。加上这两行配置代码后功能实现就正常了!

Java发送附件到邮箱相关推荐

  1. python发送文件到邮箱_python 发送附件至邮箱

    python 发送附件至邮箱 import smtplib from email.MIMEText import MIMEText from email.MIMEMultipart import MI ...

  2. Java发送网易企业邮箱邮件

    Java发送网易企业邮箱邮件 /** 此方法使用smtp协议 查看网易企业邮箱各种协议的主机和端口可访问https://qiye.163.com/help/client-profile.html查看* ...

  3. 使用PHP生成Excel文件并发送附件到邮箱

    一.生成Excel 找了个插件:PHP_XLSXWriter github地址:https://github.com/mk-j/PHP_XLSXWriter 二.参考代码 我是按照我自己项目的写的代码 ...

  4. java 发送附件_Java 基于javaMail的邮件发送(支持附件)

    基于JavaMail的Java邮件发送 Author xiuhong.chen@hand-china.com Desc 简单邮件发送 Date 2017/12/8 项目中需要根据物料资质的状况实时给用 ...

  5. java邮箱设置密送_修改后可以发送附件、抄送、密送的javabean,吐血推荐~(javamail范例)...

    修改后可以发送附件.抄送.密送的javabean,吐血推荐~(javamail范例) 作者:Andy.m    文章来源:www.jspcn.net 发布日期:2004年02月16日 /* *Auth ...

  6. java实现qq邮箱发送附件和图片

    生成授权码 1.进入设置账户里面,把第一个服务开启 2.点生成授权码,在代码中当成是密码 3.集成到springboot里面,引入依赖包 <dependency><groupId&g ...

  7. java发送带格式邮件及带多附件

    最近忙于将日常的质量工作纳入到自动化管理中,其中经常会实现给不同人员发送带特定格式和附件的邮件,并抄送给某些领导,在实现过程中从网上找到的东东基本上是比较单一的某项功能,现我把工作中遇到的这种比较综合 ...

  8. spring java 发送邮箱验证

    使用spring API实现发送邮箱验证的功能 pom.xml文件 <dependency><groupId>org.springframework.integration&l ...

  9. Java 实现邮箱发送验证码——QQ邮箱为例

    JAVA实现使用QQ邮箱发送验证码功能 QQ邮箱设置 第一步 ,打开QQ邮箱(地址:https://mail.qq.com/): 第二步 ,登录后点击设置 第三步,点击账户,下拉找到POP3/IMAP ...

最新文章

  1. Linux进程间通信中的文件和文件锁
  2. ajax传递数组后台接收不到值的问题
  3. 【预训练模型】一文串起从NLP到CV 预训练技术和范式演进
  4. Mac 环境变量配置
  5. Kali利用msf对MS10_061漏洞进行渗透测试
  6. 衡量模块独立性的两个定性标准
  7. 噪声产生原因_皮带输送机异常噪声的5种情况、减速机断轴的原因和解决方法...
  8. 20200926:(leetcode207周周赛题解(上))
  9. VISTA中注册表项LEGACY_****的删除--另一种方法:使用psExec
  10. 【java】矩阵的求解
  11. java static 区别_Java中static和final的区别
  12. JAVA入门到精通(3)IDEA开发工具的使用
  13. 最早期的计算机游戏,经典至极让老玩家记忆犹新 初代电脑游戏大作盘点
  14. 2022年最新计算机专业毕业设计选题 - 选题推荐 毕设开题 简单易过 题目新颖
  15. python打开ie浏览器_python+selenium启动IE浏览器
  16. Day04_Manuals for Python@lisongye - list列表
  17. silverlight beet - 从xap文件中加载图片
  18. 关于直播的iOS开发
  19. 2021高考成绩省内排名查询,云南高考排名查询方法 2021年云南高考成绩位次全省排名查询...
  20. Django企业it资产管理系统

热门文章

  1. 渔港股份创业板IPO上会被否:审核被终止,曾计划募资3.3亿元
  2. [转载]625线,525线什么意思?
  3. 如何在H5页面中实现长按二维码关注微信公众号?
  4. visio如何找到画线工具
  5. 手游开发攻防——二、基础篇
  6. vue3 中使用antd UI组件
  7. Unity 场景练习02 仿风之旅人
  8. 【云原生】Kubernetes(k8s)Calico 客户端工具 calicoctl
  9. Windows 软件定义存储S2D 测试
  10. “麒麟计划”落地苍南,赋能外贸企业数字化转型!