spring - 在 Spring Boot 中安排发送电子邮件
问题描述
我想安排使用 Spring Boot 发送电子邮件通知,用户创建通知(主题、消息、发送日期...)
public class EmailNotification implements Serializable {
/**
*
*/
private static final long serialVersionUID = 3400952201530474821L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
private String subject;
private String message;
@Column(name = "sending_date")
@Basic(fetch = FetchType.EAGER)
private String sendingDate;
通常,我从数据库中获取通知列表,我应该使用循环“for”发送每个通知及其自己的信息(由客户端指定),但我发现发送时间有问题,我无法使用@scheduled 注释,因为这里的 cron 表达式应该是动态的(从数据库中检索)这是我的方法:
public void periodicNotification() {
JavaMailSenderImpl jms = (JavaMailSenderImpl) sender;
MimeMessage message = jms.createMimeMessage();
MimeMessageHelper helper;
try {
helper = new MimeMessageHelper(message, MimeMessageHelper.MULTIPART_MODE_MIXED_RELATED, StandardCharsets.UTF_8.name());
//get the list of notifs from the DB
List<EmailNotification> emailNotifs = emailNotificationsRepo.findAll();
for (EmailNotification i : emailNotifs)
{
helper.setFrom("mail");
List<String> recipients = fileRepo.findWantedEmails(i.getDaysNum());
String[] to = recipients.stream().toArray(String[]::new);
helper.setTo(to);
helper.setText(i.getMessage());
helper.setSubject(i.getSubject());
sender.send(message);
System.out.println("Email successfully sent to: " + Arrays.toString(to));
}
}
catch (MessagingException e) {
e.print...
}
}
我开始了这个方法:
public static void main(String[] args) {
try {
JobDetail job1 = JobBuilder.newJob(Job1.class).withIdentity("job1", "group1").build();
Trigger trigger1 = TriggerBuilder.newTrigger().withIdentity("cronTrigger1", "group1")
.withSchedule(CronScheduleBuilder.cronSchedule("0/30 * * * * ?")).build();
Scheduler scheduler1 = new StdSchedulerFactory().getScheduler();
scheduler1.start();
scheduler1.scheduleJob(job1, trigger1);
Thread.sleep(100000);
scheduler1.shutdown();
} catch (Exception e) {
e.printStackTrace();
}
}
但我想安排在客户端指定的时间发送电子邮件,在上面的方法中,cron 表达式是静态的,这不是我要找的
解决方案
推荐阅读
- asp.net-core - 您可以访问 ASP.NET Core 2.1 MVC 客户端验证的其他属性的元数据吗?
- mysql - 返回两种类型的 Slick TableQuerys 之一的 Scala 函数
- php - php-amqplib 连接错误
- gatling - 仅在检查成功时才调用函数?
- c++ - 如何在另一种语言的后续分析中使用来自 C++ 库的设备数据
- javascript - 弹出模式出现,但值没有更新,因为服务器端点击事件没有触发
- matlab - 导出为PDF后图中的白线
- c# - WPF C#来回移动黑白时出现错误两个组合框项目选择
- android - 未能以哈希字符串“android-O”为目标
- python - 在python中使用getattr动态映射函数名