我想在我的Angular 表上指定的日期和时间执行以下方法-以下是输入:
<input required [(ngModel)]="emailNotification.sendingDate" class="form-control" type="datetime-local" name="sendingDate" id="time">
发送电子邮件的方法(从控制器)
@PostMapping(value="/getdetails")
public @ResponseBody void sendMail(@RequestBody EmailNotification details) throws Exception {
try {
JavaMailSenderImpl jms = (JavaMailSenderImpl) sender;
MimeMessage message = jms.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, MimeMessageHelper.MULTIPART_MODE_MIXED_RELATED, StandardCharsets.UTF_8.name());
helper.setFrom("smsender4@gmail.com");
List<String> recipients = fileRepo.findWantedEmails(details.getDaysNum());
String[] to = recipients.stream().toArray(String[]::new);
helper.setTo(to);
helper.setText(details.getMessage(),true);
helper.setSubject("Test Mail");
details.setRecipients(to);
sender.send(message);
enr.save(new EmailNotification(details.getId(), "Test mail", details.getMessage(), details.getDaysNum(), details.getRecipients(), details.getSendingDate()));
} catch (MessagingException e) {
throw new RuntimeException("fail to send emails: " + e.getMessage());
}
电子邮件通知.class
public class EmailNotification {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
private String subject;
private String message;
private int daysNum;
private String[] recipients;
/*
* @Temporal(TemporalType.TIMESTAMP)
*/
//"yyyy-MM-dd'T'HH:mm:ss.SSSX"
@Column(name = "sending_date")
@Basic(fetch = FetchType.EAGER)
private LocalDateTime sendingDate;
public EmailNotification(long id, String subject,String message, int daysNum, String[] recipients, LocalDateTime sendingDate) {
super();
this.sendingDate = sendingDate;
this.daysNum = daysNum;
this.id = id;
this.message = message;
this.subject = subject;
}
我不知道该怎么办,我ù如果有人帮忙,我会非常感激的
1条答案
按热度按时间qnyhuwrf1#
现在我想我明白你想达到什么目的了,所以检查一下这是否对你有效。
假设你想发送一封电子邮件时,在给定的表(我将命名为付款),有5天的最后期限。假设此表有一个名为payment的等效实体类,您可以执行以下操作:
如果支付实体有自己的crudepository扩展,您可以使用它来访问dabatase,那么您可以进行查询以查找接近截止日期的支付。这当然取决于您访问数据库的方式。下一个示例查询可能不起作用(因为据我所知,jpa不支持datediff),但可以作为您试图实现的目标的基础
创建一个计划任务类,在截止日期前为每一笔付款发送电子邮件。不要将参数传递给方法,而是使用您已经拥有的数据库访问权限来填充您的电子邮件。你不应该依赖前面收到的信息(比如Angular ),因为它很容易操作。使用你知道的信息,数据库中存储的信息。在本例中,任务从10:00开始:
这只是一个指导方针,因为关于你的代码还有一些我不知道的地方,但我希望它足够清楚,这样对你有帮助。祝你好运。