发送定时邮件的Java代码如何编写
时间: 2024-05-09 20:21:17 浏览: 20
以下是一个发送定时邮件的Java代码示例:
```java
import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.*;
public class SendEmail {
public static void main(String[] args) throws Exception {
String to = "recipient@example.com";
String from = "sender@example.com";
String host = "smtp.example.com";
String subject = "Test Email";
String message = "This is a test email.";
// create properties object
Properties properties = new Properties();
properties.put("mail.smtp.host", host);
properties.put("mail.smtp.port", "587");
properties.put("mail.smtp.auth", "true");
// create session object
Session session = Session.getInstance(properties, new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("username", "password");
}
});
// create message object
MimeMessage mimeMessage = new MimeMessage(session);
mimeMessage.setFrom(new InternetAddress(from));
mimeMessage.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
mimeMessage.setSubject(subject);
mimeMessage.setText(message);
// create scheduler object
Scheduler scheduler = new Scheduler();
scheduler.schedule(mimeMessage, "2022-01-01 00:00:00");
System.out.println("Email has been scheduled.");
}
}
class Scheduler {
public void schedule(MimeMessage message, String dateTime) throws Exception {
// create scheduler properties object
Properties properties = new Properties();
properties.put("mail.smtp.host", "smtp.gmail.com");
properties.put("mail.smtp.port", "587");
properties.put("mail.smtp.auth", "true");
properties.put("mail.smtp.starttls.enable", "true");
// create scheduler session object
Session session = Session.getInstance(properties);
// create scheduler task object
SchedulerTask task = new SchedulerTask(message, session);
// create scheduler timer object
Timer timer = new Timer();
// parse date and time from input string
int year = Integer.parseInt(dateTime.substring(0, 4));
int month = Integer.parseInt(dateTime.substring(5, 7));
int day = Integer.parseInt(dateTime.substring(8, 10));
int hour = Integer.parseInt(dateTime.substring(11, 13));
int minute = Integer.parseInt(dateTime.substring(14, 16));
int second = Integer.parseInt(dateTime.substring(17, 19));
// create scheduler date object
java.util.Date date = new java.util.Date(year - 1900, month - 1, day, hour, minute, second);
// schedule task
timer.schedule(task, date);
}
}
class SchedulerTask extends TimerTask {
private MimeMessage message;
private Session session;
public SchedulerTask(MimeMessage message, Session session) {
this.message = message;
this.session = session;
}
public void run() {
try {
// send message
Transport.send(message);
System.out.println("Email has been sent.");
} catch (Exception ex) {
System.out.println(ex);
}
}
}
```
在这个示例中,我们首先创建了一个 `SendEmail` 类来构建邮件并调用调度程序。然后,我们创建了一个 `Scheduler` 类来调度邮件发送。最后,我们创建了一个 `SchedulerTask` 类来发送邮件。
在调度程序的 `schedule` 方法中,我们首先创建了一个 `Properties` 对象来设置 SMTP 服务器和身份验证信息。然后,我们创建了一个 `Session` 对象来与 SMTP 服务器进行通信。接下来,我们创建了一个 `SchedulerTask` 对象来代表要执行的任务。最后,我们创建了一个 `Timer` 对象来调度任务,并使用传递的日期和时间来设置任务的执行时间。
在 `SchedulerTask` 类中,我们重写了 `run` 方法来发送邮件。我们使用 `Transport.send` 方法来发送邮件,并在发送成功或失败时打印相应的消息。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)