javascript - 如何使用 Spring Boot、JavaScript、Ajax 将网页的电子邮件作为附件发送?
问题描述
我已经实现了以 PDF 格式生成发票的功能。所以基本上有两个按钮,一个用于打印,另一个用于电子邮件。因此,当用户单击电子邮件按钮时,应将发票发送到特定的电子邮件。
问题是我对实现有点困惑。因此,如果有人有任何建议,将不胜感激。
解决方案
@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
推荐阅读
- angular - echarts line + area buggy scale
- stripe-payments - 如何让我的客户使用 Stripe Billing Portal 选择计划?
- php - 如何仅在产品标题上方显示父类别?
- sql-server - SQL Server 将 XML 反序列化为表
- c++ - 如何使用 DirectXMath 将世界空间中的 3D 位置转换为 2D 位置
- pine-script - 15 ORB 仅限当日 - 松脚本 - 交易视图平台
- python - 如果客户有“分数”,则过滤掉 np.nan 并保留 max order_date
- automated-tests - Botium Box 爬虫测试用例在 Watson Assistant 按钮上失败
- javascript - 在 PHP 中使用 Javascript 时如何获得 eval 的结果?
- c# - System.Windows.Media.Color.FromArgb 和 PdfSharp.Drawing.XColor.FromArgb 之间的不同灰度