package com.act.webmail.service;
import javax.mail.internet.MimeMessage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.ByteArrayResource;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import com.act.webmail.dto.MessageToSend;
@Service
public class ActMailSenderService {
@Autowired
private JavaMailSender javaMailSender;
@Async
public void sendEmail(MessageToSend messageToSend, MultipartFile... multipartFileList) {
try {
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage);
if (messageToSend.getReplyTo() != null && !messageToSend.getReplyTo().equals("")){
mimeMessage.addHeader("In-Reply-To", messageToSend.getReplyTo());
}
helper.setFrom("jackson.baby@xxxx.in");
helper.setTo(messageToSend.getTo());
helper.setSubject(messageToSend.getSubject());
helper.setText(messageToSend.getBody(), true);
for (MultipartFile multipartFile : multipartFileList) {
byte[] multipartFileByteArray= multipartFile.getBytes();
helper.addAttachment(multipartFile.getOriginalFilename(), new ByteArrayResource(multipartFileByteArray));
}
javaMailSender.send(mimeMessage);
System.out.println(messageToSend.getReplyTo() + " sent successfully!");
} catch (Exception e) {
e.printStackTrace();
}
}
}
我初始化了新的ByteArrayResource(multipartFile.getBytes())并在org.springframework.mail.javamail.MimeMessageHelper的addAttachment函数中使用,但是我得到了异常"java.io.FileNotFoundException: C:\Users\Jackson Baby\AppData\Local\Temp\tomcat.8088819519816892725.8080\work\Tomcat\localhost\ROOT\upload_525fd01b_db90_4589_921f_50bf9a1e6e47_00000001.tmp (The system cannot find the file specified)"
有什么方法可以解决这个问题吗?
答案 0 :(得分:0)
我有一个同样的问题,当我试图获取文件的字节或输入流时,我将收到“找不到文件异常”。
我终于通过从“休息控制器”方法中删除@Async
批注来解决了该问题。
这似乎是造成问题的原因...