Иметь форму, которая отправляется по электронной почте, когда пользователь заполняет и нажимает кнопку "Отправить".В форме также есть модальный режим, который «временно» сохраняет файлы в папку на сервере.Когда нажата кнопка отправки формы, мне нужно, чтобы все файлы в папке на сервере были прикреплены к электронной почте для ввода формы.
Попытка с использованием FileSystemResource и helper.addAttachment в файле службы электронной почты.Также попытался установить файлы в качестве переменной для вызова, оба способа не работают для меня.Я продолжаю получать исключение Java нулевого указателя.Любая идея, как добавить все файлы в электронное письмо как вложение или какая-то идея, что идет не так?
Вот контроллер для отправки формы:
@RequestMapping(value="/directBind", params="send")
public String send(Model model, @ModelAttribute(value="directBind") DirectBind directBind){
List<String> businessAgencyList = directBind.getBusinessAgencyList();
Mail mail = new Mail();
mail.setFrom("no-reply@example.com");
mail.setTo(new String[]{"example@example.com"});
mail.setSubject("Data Checklist");
Map<String, Object> mailModel = new HashMap<String, Object>();
mail.setModel(mailModel);
try {
emailService.sendSimpleMessage(mail, directBind, storageService);
} catch (Exception e) {
e.printStackTrace();
return ("redirect:/?sentMessageFail");
}
return ("redirect:/?sentMessage");
}
@RequestMapping(value="/email")
public String email(){
return "emailMessage";
}
}
Вот служба электронной почты
public class EmailService {
private JavaMailSender javaMailSender;
@Autowired
public EmailService(JavaMailSender javaMailSender){
this.javaMailSender = javaMailSender;
}
@Autowired
private SpringTemplateEngine templateEngine;
public void sendSimpleMessage(Mail mail, DirectBind directBind, StorageService storage) throws MessagingException, IOException {
MimeMessage message = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message,
MimeMessageHelper.MULTIPART_MODE_MIXED_RELATED,
StandardCharsets.UTF_8.name());
helper.addAttachment("Mail_Icon.png", new ClassPathResource("static/images/Mail_Icon.png"));
Context context = new Context();
context.setVariables(mail.getModel());
context.setVariable("directBind",directBind);
String html = templateEngine.process("emailMessage", context);
helper.setTo(mail.getTo());
helper.setText(html, true);
helper.setSubject(mail.getSubject());
helper.setFrom(mail.getFrom());
FileSystemResource file= new FileSystemResource(new File(storage.getUploadDir()));
helper.addAttachment("attachment", file);
javaMailSender.send(message);
}
}