Java 提醒簿:创建、管理和邮件提醒事项
这是一个简单的 Java 程序,实现了提醒簿的功能。
import java.util.ArrayList;
import java.util.Date;
import java.util.Scanner;
import java.util.Timer;
import java.util.TimerTask;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class ReminderBook {
private ArrayList<Reminder> reminders; // 提醒列表
public ReminderBook() {
reminders = new ArrayList<>();
}
public void addReminder(Date time, String content) {
reminders.add(new Reminder(time, content));
}
public void deleteReminder(int index) {
reminders.remove(index);
}
public void updateReminder(int index, Date time, String content) {
reminders.set(index, new Reminder(time, content));
}
public void showReminders() {
System.out.println('当前提醒:');
for (int i = 0; i < reminders.size(); i++) {
System.out.println(i + '. ' + reminders.get(i));
}
}
public void startReminding() {
Timer timer = new Timer();
for (Reminder r : reminders) {
timer.schedule(new ReminderTask(r), r.getTime());
}
}
public static void main(String[] args) {
ReminderBook book = new ReminderBook();
Scanner in = new Scanner(System.in);
while (true) {
System.out.println('请输入操作:1-添加提醒,2-删除提醒,3-修改提醒,4-查看提醒,5-开始提醒,0-退出');
int op = in.nextInt();
if (op == 0) {
break;
}
switch (op) {
case 1:
System.out.println('请输入提醒时间(格式:yyyy-MM-dd HH:mm:ss):');
String timeStr = in.next();
System.out.println('请输入提醒内容:');
String content = in.next();
try {
Date time = Reminder.dateFormat.parse(timeStr);
book.addReminder(time, content);
System.out.println('添加成功!');
} catch (Exception e) {
System.out.println('时间格式不正确!');
}
break;
case 2:
book.showReminders();
System.out.println('请输入要删除的提醒编号:');
int index = in.nextInt();
book.deleteReminder(index);
System.out.println('删除成功!');
break;
case 3:
book.showReminders();
System.out.println('请输入要修改的提醒编号:');
index = in.nextInt();
System.out.println('请输入新的提醒时间(格式:yyyy-MM-dd HH:mm:ss):');
timeStr = in.next();
System.out.println('请输入新的提醒内容:');
content = in.next();
try {
Date time = Reminder.dateFormat.parse(timeStr);
book.updateReminder(index, time, content);
System.out.println('修改成功!');
} catch (Exception e) {
System.out.println('时间格式不正确!');
}
break;
case 4:
book.showReminders();
break;
case 5:
book.startReminding();
break;
default:
System.out.println('操作不正确!');
break;
}
}
}
}
class Reminder {
public static final java.text.SimpleDateFormat dateFormat = new java.text.SimpleDateFormat('yyyy-MM-dd HH:mm:ss');
private Date time; // 提醒时间
private String content; // 提醒内容
public Reminder(Date time, String content) {
this.time = time;
this.content = content;
}
public Date getTime() {
return time;
}
public String getContent() {
return content;
}
public String toString() {
return dateFormat.format(time) + ' ' + content;
}
}
class ReminderTask extends TimerTask {
private Reminder reminder;
public ReminderTask(Reminder reminder) {
this.reminder = reminder;
}
public void run() {
System.out.println('提醒时间到:' + reminder);
// 发送邮件提醒
final String username = '你的邮箱账号';
final String password = '你的邮箱密码';
final String emailTo = '收件人邮箱地址';
Properties props = new Properties();
props.put('mail.smtp.auth', 'true');
props.put('mail.smtp.starttls.enable', 'true');
props.put('mail.smtp.host', 'smtp.gmail.com');
props.put('mail.smtp.port', '587');
Session session = Session.getInstance(props,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
try {
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress(username));
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(emailTo));
message.setSubject('提醒:' + reminder.getContent());
message.setText('提醒时间到:' + reminder);
Transport.send(message);
System.out.println('邮件提醒已发送!');
} catch (MessagingException e) {
System.out.println('邮件提醒发送失败!');
throw new RuntimeException(e);
}
}
}
该程序使用 ArrayList 来存储提醒,可以添加、删除、修改提醒,并且可以查看当前的提醒列表。在开始提醒时,使用 Timer 来定时执行 ReminderTask,ReminderTask 会弹出窗口提醒用户,并使用 JavaMail 发送邮件提醒。用户需要在程序中输入自己的邮箱账号、密码和收件人邮箱地址,才能使用邮件提醒功能。
原文地址: https://www.cveoy.top/t/topic/oKQb 著作权归作者所有。请勿转载和采集!