我需要发送大约40-50000封邮件,具体取决于用户的选择。这些邮件ID存储在数据库中。可以有任意数量的邮件。为此设置了专用的邮件服务器。我不希望他们最终成为垃圾邮件。 我想每小时发送大约5000封邮件,以避免被列入黑名单。我想安排一个批处理邮件作业,在该作业中,所有邮件均已发送,而重试失败的邮件。从而避免。批处理作业是在用户启动它时计划的,并且他可以控制停止并记录发送的邮件。 这是我发现可以开始和停止工作的方式,但是可以有更好的方法来实现此目的。请帮忙
@RequestMapping("start")
ResponseEntity<Void> start() {
scheduledFuture = taskScheduler.scheduleAtFixedRate(sendMail(), FIXED_RATE);
return new ResponseEntity<Void>(HttpStatus.OK);
}
@RequestMapping("stop")
ResponseEntity<Void> stop() {
scheduledFuture.cancel(false);
return new ResponseEntity<Void>(HttpStatus.OK);
}
这些邮件将发送给一群封闭的学生,这与垃圾邮件或电子邮件营销无关。 我是Spring批处理的新手,不知道如何进行和使用Spring Boot。 注意:这与电子邮件营销或垃圾邮件无关。
到目前为止,我已经想到了一种将所有要发送的邮件保存在邮件队列中的方法
邮件队列实体:
package com.iitraa.alumnus.iitAlumnus.entity;
import lombok.*;
import javax.persistence.*;
@Data
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Entity
public class MailQueue {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
private String name;
private String email;
@ManyToOne
private MailJobs mailJobs;
private boolean complete;
public void setName(String name) {
this.name = name;
}
public void setEmail(String email) {
this.email = email;
}
public void setMailJobs(MailJobs mailJobs) {
this.mailJobs = mailJobs;
}
public String getName() {
return name;
}
public String getEmail() {
return email;
}
public MailJobs getMailJobs() {
return mailJobs;
}
}
邮件作业是安排了邮件数量的每个作业
package com.iitraa.alumnus.iitAlumnus.entity;
import lombok.*;
import javax.persistence.*;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@Data
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Entity
public class MailJobs {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column
private String subject;
@Column
private String mailMessage;
@Column
private String fromEmail;
@Column
private String name;
@ManyToMany
private Set<Year> years= new HashSet<>();;
public Set<Year> getYears() {
return years;
}
public void setYears(Set<Year> years) {
this.years = years;
}
public int getId() {
return id;
}
}
我要添加包含要发送的所有邮件的邮件队列,然后在启动方法sendMail()上方每小时运行一次,该方法将从mailQueue中获取一批邮件,并将其发送并从表中删除,直到表为空为止。 我不知道更好的方法或如何使用Spring Batch邮件计划来实现它。 这就是我需要的帮助。