JAVA示例:搜索IMAP邮箱里的邮件

import java.util.Properties;

import javax.mail.Address;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.internet.InternetAddress;
import javax.mail.search.FromStringTerm;

public class SearchMail {

    public static void main(String[] args) throws Exception {
        //config
        String protocol = "imap";
        String host = "mailsv01.xxxxxxxx";
        int port = 993;
        String user = "xx";
        String password = "xx";
        String mbox = "INBOX";

        Properties props = System.getProperties();
        Session sess = Session.getInstance(props, null);
        //            sess.setDebug(true);
        Store st = sess.getStore("imaps");
        st.connect(host, port, user, password);
        Folder fol = st.getFolder(mbox);

        SearchMail one=new SearchMail();
        if (fol.exists()) {
            for (Folder f : fol.list()) {
                System.out.printf("box:%s", f.getName());
            }
            fol.open(Folder.READ_ONLY);
            for (Message m : one.search(fol)) {
                System.out.printf("/n来自%s /n标题%s/n大小%d/n",
                        Add2Str(m.getFrom()), m.getSubject(), m.getSize());
            }
            fol.close(false);
        } else {
            System.out.printf("%s is not exist.", mbox);
        }
        st.close();

    }

//    Message[] list(Folder f) {
//        try {
//            return f.getMessages();
//        } catch (MessagingException e) {
//            e.printStackTrace();
//            return null;
//        }
//    }
    Message[] search(Folder f) {
        try {
            return f.search(new FromStringTerm("xxxxxxxx"));
        } catch (MessagingException e) {
            e.printStackTrace();
            return null;
        }
    }

    public static String Add2Str(Address[] a) {
        if (a == null) {
            return null;
        }
        StringBuilder sb = new StringBuilder("");
        for (Address adr : a) {
            InternetAddress ia = (InternetAddress) adr;
            sb.append(ia.getAddress());
        }
        return sb.toString();

    }

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
您好!针对您提出的问题,我可以提供以下解答: 使用 Java 语言获取 QQ 邮箱邮件列表,可以通过 JavaMail 库来实现。JavaMailJavaEE 标准的一部分,提供了处理 Internet 邮件的 API,包括 SMTP、POP3、IMAP 协议等。以下是一个简单的示例代码: ```java import java.util.Properties; import javax.mail.Folder; import javax.mail.Message; import javax.mail.Session; import javax.mail.Store; public class QQMail { public static void main(String[] args) throws Exception { // 配置信息 String host = "imap.qq.com"; String username = "你的QQ邮箱账号"; String password = "你的QQ邮箱密码"; // 连接邮件服务器 Properties props = new Properties(); props.setProperty("mail.store.protocol", "imap"); props.setProperty("mail.imap.host", host); props.setProperty("mail.imap.port", "993"); props.setProperty("mail.imap.ssl.enable", "true"); Session session = Session.getInstance(props); Store store = session.getStore("imap"); store.connect(username, password); // 打开收件箱 Folder inbox = store.getFolder("INBOX"); inbox.open(Folder.READ_ONLY); // 获取邮件列表 Message[] messages = inbox.getMessages(); for (int i = 0; i < messages.length; i++) { Message message = messages[i]; System.out.println("Subject: " + message.getSubject()); System.out.println("From: " + message.getFrom()[0]); System.out.println("Sent Date: " + message.getSentDate()); System.out.println("Message: " + message.getContent()); } // 关闭连接 inbox.close(false); store.close(); } } ``` 以上代码中,首先配置了 QQ 邮箱IMAP 服务器地址、用户名和密码,然后使用 JavaMail 库连接邮件服务器,打开收件箱,获取邮件列表,遍历邮件并输出邮件的主题、发件人、发送日期和内容等信息。需要注意的是,由于 QQ 邮箱IMAP 服务器需要 SSL 安全连接,因此需要设置相应的 SSL 属性。 希望以上解答能够对您有所帮助。如果您还有任何问题,请随时追问。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值