java 收 特定日期邮件_java mail解析邮件并获取最近时间的指定邮件
时间: 2024-01-29 15:02:43 浏览: 185
java定时收取邮件
5星 · 资源好评率100%
下面是使用 JavaMail 解析邮件并获取最近时间的指定邮件的示例代码:
```java
import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;
public class MailParser {
public static void main(String[] args) throws Exception {
// 邮件服务器配置
String host = "your.mail.server.com";
String username = "your.email@address.com";
String password = "your.email.password";
// 创建会话
Properties props = new Properties();
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.host", host);
props.put("mail.smtp.port", "587");
Session session = Session.getInstance(props, new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
// 获取收件箱
Folder inbox = session.getFolder("INBOX");
inbox.open(Folder.READ_ONLY);
// 获取最近时间的指定日期的邮件
Calendar cal = Calendar.getInstance();
cal.set(2021, Calendar.JANUARY, 1); // 指定日期为2021年1月1日
Date searchDate = cal.getTime();
SearchTerm newerThan = new ReceivedDateTerm(ComparisonTerm.GE, searchDate);
Message[] messages = inbox.search(newerThan);
// 解析邮件
for (int i = messages.length - 1; i >= 0; i--) { // 倒序遍历,获取最近一封符合条件的邮件
MimeMessage message = (MimeMessage) messages[i];
String subject = message.getSubject();
Address[] from = message.getFrom();
Date sentDate = message.getSentDate();
System.out.println("Subject: " + subject);
System.out.println("From: " + Arrays.toString(from));
System.out.println("Sent Date: " + sentDate);
System.out.println();
}
// 关闭收件箱和会话
inbox.close(false);
session.close();
}
}
```
其中,`host`、`username` 和 `password` 分别代表你的邮件服务器地址、邮箱地址和密码,需要替换为自己的信息。`cal.set(2021, Calendar.JANUARY, 1)` 指定了要查找的日期,这里设置为 2021 年 1 月 1 日,你可以根据自己的需求修改。
`new ReceivedDateTerm(ComparisonTerm.GE, searchDate)` 创建了一个搜索条件,表示接收日期在指定日期之后(`GE` 表示大于等于)。`inbox.search(newerThan)` 执行搜索,返回符合条件的邮件列表。由于邮件列表是按照日期从旧到新排序的,因此我们需要倒序遍历,获取最近一封符合条件的邮件。
在解析邮件时,你可以获取邮件主题、发件人、发送日期等信息,根据需求进行处理即可。最后别忘了关闭收件箱和会话。
阅读全文