java mail 读取邮件列表,

        // 准备连接服务器的会话信息
        Properties props = new Properties();
        props.setProperty("mail.store.protocol", "imap");
        props.setProperty("mail.imap.host", "imap.163.com");
        props.setProperty("mail.imap.port", "143");

        // 创建Session实例对象
        Session session = Session.getInstance(props);

        // 创建IMAP协议的Store对象
        Store store = session.getStore("imap");

        // 连接邮件服务器
        store.connect("186*******", "111111");

        // 获得收件箱
        Folder folder = store.getFolder("INBOX");
        // 以读写模式打开收件箱
        folder.open(Folder.READ_WRITE);

        // 获得收件箱的邮件列表
        Message[] messages = folder.getMessages();

        // 打印不同状态的邮件数量
        System.out.println("收件箱中共" + messages.length + "封邮件!");
        System.out.println("收件箱中共" + folder.getUnreadMessageCount() + "封未读邮件!");
        System.out.println("收件箱中共" + folder.getNewMessageCount() + "封新邮件!");
        System.out.println("收件箱中共" + folder.getDeletedMessageCount() + "封已删除邮件!");

        System.out.println("------------------------开始解析邮件----------------------------------");

        // 解析邮件
        for (Message message : messages) {
            IMAPMessage msg = (IMAPMessage) message;
            msg.setFlag(Flags.Flag.SEEN, true);
//            String subject = MimeUtility.decodeText(msg.getSubject());
//            System.out.println("[" + subject + "]未读,是否需要阅读此邮件(yes/no)?");
//            BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
//            String answer = reader.readLine();   //www.2cto.com
//            if ("yes".equalsIgnoreCase(answer)) {
////                POP3ReceiveMailTest.parseMessage(msg);  // 解析邮件
//                // 第二个参数如果设置为true,则将修改反馈给服务器。false则不反馈给服务器
//                msg.setFlag(Flags.Flag.SEEN, true);   //设置已读标志
//            }
        }

        // 关闭资源
        folder.close(false);
        store.close();

pop3是不可以更改邮件状态的,

所以改用imap协议

转载于:https://www.cnblogs.com/lvlv/p/5909437.html

您好!要读取当天已读邮件,可以使用 Java Mail API 中的 IMAP 协议来实现。以下是示例代码: ```java import javax.mail.*; import javax.mail.internet.*; import java.util.*; public class ReadTodayReadEmails { public static void main(String[] args) throws Exception { // 设置邮件服务器参数 String host = "imap.gmail.com"; String username = "your_username"; String password = "your_password"; // 获取当天日期 Calendar cal = Calendar.getInstance(); SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy"); String today = sdf.format(cal.getTime()); // 连接到邮件服务器 Properties props = new Properties(); props.setProperty("mail.store.protocol", "imaps"); props.setProperty("mail.imaps.host", host); props.setProperty("mail.imaps.port", "993"); props.setProperty("mail.imaps.ssl.enable", "true"); Session session = Session.getDefaultInstance(props); Store store = session.getStore(); store.connect(username, password); // 打开收件箱 Folder inbox = store.getFolder("INBOX"); inbox.open(Folder.READ_ONLY); // 获取当天已读邮件 Message[] messages = inbox.search(new FlagTerm(new Flags(Flags.Flag.SEEN), true)); List<Message> todayReadMessages = new ArrayList<Message>(); for (Message message : messages) { Date date = message.getSentDate(); String sentDate = sdf.format(date); if (sentDate.equals(today)) { todayReadMessages.add(message); } } // 输出邮件内容 for (Message message : todayReadMessages) { System.out.println("Subject: " + message.getSubject()); System.out.println("From: " + message.getFrom()[0]); System.out.println("To: " + message.getAllRecipients()[0]); System.out.println("Date: " + message.getSentDate()); System.out.println("Content: " + message.getContent().toString()); } // 关闭连接 inbox.close(false); store.close(); } } ``` 请将 `your_username` 和 `your_password` 替换为您的实际用户名和密码。另外,如果您使用的是其他邮件服务器,请修改 `host`、`mail.imaps.host` 和 `mail.imaps.port` 参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值