需求: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);
觉得有用的点个赞吧!一起学习,谢谢