需求:Java 使用 JavaMailsender 发送邮件,并携带附件(Excel),附件类型为前端传入的 Multipart 类型

 

public void sendMail (MultipartFile multipartFile)  throws Exception{
// 邮箱服务器,端口,密码
  JavaMailsender mailsender = new JavaMailsenderImpl();mailsender.setHost("服务器名");
  mailsender.setPort (16000);
  mailsender.setUsername( "用户名");mailsender.setPassword("密码");
 
  MimeMessage msg = mailsender.createMimeMessage()
// 设置编妈,true表示为 multipart 邮件(必须设置为true,否则不能携带附件)
  MimeMessageHelper helper = new MimeMessageHelper(msg, true,"utf-8");
// 收件地址
// 抄送
// 发件人
  helper.setText( "邮件正文"); 
  helper.setSubject("邮件标题");
 // MultipartFile 转 File
  File file = MultipartFileToFile.multipartFileToFile(multipartFile);
// 设置附件:第一个参数附件名,第二个参数附件
  helper .addAttachment("附件文件名",new FilesystemResource(file);
// 发送邮件
  mailSender.send(msg);
// 删除临时副件
  MultipartFileToFile.deleteTempFile(file);
}
 
/**
 * MultipartFile 转 File 相关工具类
 */public class MultipartFileToFile {
       /**
       * MultipartFile 转 File
       *
       * @param file
       * @throws Exception
       */
      public static File multipartFileToFile(MultipartFile file) throws Exception {
            File toFile = null;
            if (file.equals("") || file.getSize() <= 0) {
                  file = null;
            } else {
                  InputStream ins = null;
                  ins = file.getInputStream();
                  toFile = new File(file.getOriginalFilename());
                  inputStreamToFile(ins, toFile);
                  ins.close();
            }
            return toFile;
      }

    /**
  * 获取流文件
  *
  * @param file 文件
  * @throws Exception 异常
  */      private static void inputStreamToFile(InputStream ins, File file) {
            try {
                  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) {
                  e.printStackTrace();
            }
      }

       /**
       * 删除本地临时文件
       * @param file 文件
       */
      public static void deleteTempFile(File file) {
            if (file != null) {
                  File del = new File(file.toURI());
                  del.delete();
            }
      }
}

 

觉得有用的点个赞吧!一起学习,谢谢




// 发件人
  helper.setText( "邮件正文"); 
  helper.setSubject("邮件标题");
 // MultipartFile 转 File
  File file = MultipartFileToFile.multipartFileToFile(multipartFile);
// 设置附件:第一个参数附件名,第二个参数附件
  helper .addAttachment("附件文件名",new FilesystemResource(file);
// 发送邮件
  mailSender.send(msg);
// 删除临时副件
  MultipartFileToFile.deleteTempFile(file);

觉得有用的点个赞吧!一起学习,谢谢