#javascript #ajax #spring-boot #pdf #mime-message
Вопрос:
Я реализовал функцию для создания счета-фактуры в формате PDF. Таким образом, в основном есть две кнопки: одна для печати, а другая для электронной почты. Поэтому, когда пользователь нажимает на кнопку электронной почты, счет должен быть отправлен на определенный адрес электронной почты.
Дело в том, что я немного смущен реализацией. Так что, если у кого-нибудь есть какие-либо предложения, было бы заметно.
Комментарии:
1. Этот же PDF-файл, который вы показываете пользователю в браузере, должен был быть сгенерирован на предыдущем шаге? Когда они нажмут кнопку «Электронная почта», отправьте электронное письмо (с помощью Java-почты) или (spring-boot-mail) и прикрепите тот же файл PDF.
2. Да, когда пользователь нажимает на кнопку «Печать», затем в новом окне открывается PDF-файл счета, а затем можно распечатать или просто сохранить этот PDF-файл на своих локальных компьютерах. Итак, мой вопрос в том, нужно ли мне делать то же самое для кнопки электронной почты, чтобы отправить сгенерированный PDF-файл по электронной почте?
3. Кнопка электронной почты должна быть реализована в вашем бэкэнде. Когда пользователь нажимает «Электронная почта», он вызовет /отправит метод электронной почты, который затем (Сгенерирует PDF, создаст электронное письмо, отправит электронное письмо)
4. У вас есть какой-нибудь пример или ссылка на учебник или что-то еще, чтобы я мог получить некоторое представление об этом?
5. Поможет ли вам приведенный ниже пример ответа @Rakhi
Ответ №1:
@Controller
@RequestMapping("/mail")
public class MailController {
@Autowired
public EmailService emailService;
@RequestMapping(value = {"/send"}, method = RequestMethod.POST)
public String sendEmailWithAttachment(Model model,
HttpServletRequest request) {
//Logic to create PDF file
emailService.sendMessageWithAttachment(to,subject,body, pdfFile);
}
public interface EmailService{
sendMessageWithAttachment(
String to, String subject, String text, String pathToAttachment, FileSystemResource pdfFileToSend);
}
@Component
public class EmailServiceImpl implements EmailService {
@Autowired
private JavaMailSender emailSender;
@Override
public void sendMessageWithAttachment(
String to, String subject, String text, String pathToAttachment, FileSystemResource pdfFileToSend) {
// ...
MimeMessage message = emailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setFrom("noreply@baeldung.com");
helper.setTo(to);
helper.setSubject(subject);
helper.setText(text);
helper.addAttachment("PDFFile", pdfFileToSend);
emailSender.send(message);
// ...
}
Затем ваш Javascript вызывает эту конечную точку /mail/send, которая должна сгенерировать PDF-файл для этого пользователя, создать электронное письмо и отправить электронное письмо с помощью spring-boot-mail-starter
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
Рекомендации:
https://howtodoinjava.com/spring-boot2/send-email-with-attachment/#5
Комментарии:
1. Я скоро сообщу вам об этом. Спасибо.