JavaMail 之 搜索邮件

  • NOT条件(NotTerm类)

  • Comparison条件(ComparisonTerm类)

2、用于创建具体搜索条件的类

  • DATE条件(SentDateTerm、ReceivedDateTerm类)

  • CONTENT条件(BodyTerm类)

  • HEADER条件(FromStringTerm、RecipientStringTerm、SubjectTerm类等)

下面通过实现来说明以上类的用法及含义:

1、搜索发件人为“智联招聘“,而且邮件正文包含“Java工程师“的所有邮件

[java]  view plain copy

  1. SearchTerm andTerm = new AndTerm(

  2. new FromStringTerm(“智联招聘”),

  3. new BodyTerm(“java工程师”));

  4. Message[] messages = folder.search(andTerm);

2、搜索发件人为“智联招聘“或主题包含“最新职位信息“的所有邮件

[java]  view plain copy

  1. SearchTerm orTerm = new OrTerm(

  2. new FromStringTerm(“智联招聘”),

  3. new SubjectTerm(“最新职位信息”));

  4. Message[] messages = folder.search(orTerm);

3、搜索发件人不包含“智联招聘“所有的邮件

[java]  view plain copy

  1. SearchTerm notTerm = new NotTerm(new FromStringTerm(“智联招聘”));

  2. Message[] messages = folder.search(notTerm);

4、搜索周一到今天收到的的所有邮件

[java]  view plain copy

  1. Calendar calendar = Calendar.getInstance();

  2. calendar.set(Calendar.DAY_OF_WEEK, calendar.get(Calendar.DAY_OF_WEEK - (Calendar.DAY_OF_WEEK - 1)) - 1);

  3. Date mondayDate = calendar.getTime();

  4. SearchTerm comparisonTermGe = new SentDateTerm(ComparisonTerm.GE, mondayDate);

  5. SearchTerm comparisonTermLe = new SentDateTerm(ComparisonTerm.LE, new Date());

  6. SearchTerm comparisonAndTerm = new AndTerm(comparisonTermGe, comparisonTermLe);

  • 12
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
javaMail的详细文档,都有以下多有类的详细信息: ACL Address AddressException AddressStringTerm AddressTerm AndTerm AuthenticationFailedException Authenticator BodyPart BodyTerm ByteArrayDataSource ComparisonTerm ConnectionAdapter ConnectionEvent ConnectionListener ContentDisposition ContentType DateTerm DeliveryStatus DispositionNotification FetchProfile FetchProfile.Item Flags Flags.Flag FlagTerm Folder FolderAdapter FolderClosedException FolderEvent FolderListener FolderNotFoundException FromStringTerm FromTerm Header HeaderTerm HeaderTokenizer HeaderTokenizer.Token IllegalWriteException IMAPFolder IMAPFolder.FetchProfileItem IMAPFolder.ProtocolCommand IMAPMessage IMAPSSLStore IMAPStore IntegerComparisonTerm InternetAddress InternetHeaders InternetHeaders.InternetHeader MailDateFormat MailEvent MailHandler MailSSLSocketFactory Message Message.RecipientType MessageAware MessageChangedEvent MessageChangedListener MessageContext MessageCountAdapter MessageCountEvent MessageCountListener MessageHeaders MessageIDTerm MessageNumberTerm MessageRemovedException MessagingException MethodNotSupportedException MimeBodyPart MimeMessage MimeMessage.RecipientType MimeMultipart MimePart MimePartDataSource MimeUtility Multipart MultipartDataSource MultipartReport NewsAddress NoSuchProviderException NotTerm OrTerm ParameterList ParseException Part PasswordAuthentication POP3Folder POP3Message POP3SSLStore POP3Store PreencodedMimeBodyPart Provider Provider.Type Quota Quota.Resource QuotaAwareStore ReadOnlyFolderException ReceivedDateTerm RecipientStringTerm RecipientTerm Report Rights Rights.Right SearchException SearchTerm SendFailedException SentDateTerm Service Session SharedByteArrayInputStream SharedFileInputStream SharedInputStream SizeTerm SMTPAddressFailedException SMTPAddressSucceededException SMTPMessage SMTPSendFailedException SMTPSSLTransport SMTPTransport Store StoreClosedException StoreEvent StoreListener StringTerm SubjectTerm Transport TransportAdapter TransportEvent TransportListener UIDFolder UIDFolder.FetchProfileItem URLName
要获取已发送邮件,你需要连接到邮件服务器,打开“已发送”邮件夹,并遍历所有邮件。以下是一个简单的示例代码: ```java // 连接到邮件服务器 Properties props = new Properties(); props.setProperty("mail.smtp.host", "smtp.example.com"); props.setProperty("mail.smtp.auth", "true"); Session session = Session.getDefaultInstance(props, new Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication("your_username", "your_password"); } }); Store store = session.getStore("imap"); store.connect("imap.example.com", "your_username", "your_password"); // 打开“已发送”邮件夹 Folder folder = store.getFolder("Sent"); folder.open(Folder.READ_ONLY); // 遍历所有邮件 Message[] messages = folder.getMessages(); for (int i = 0; i < messages.length; i++) { Message message = messages[i]; System.out.println("Subject: " + message.getSubject()); } // 关闭邮件夹和连接 folder.close(false); store.close(); ``` 需要注意的是,不同的邮件服务器可能会有不同的邮件夹名称,你需要根据你的邮件服务器来设置相应的名称,或者使用JavaMail提供的`list()`方法来列出所有的邮件夹名称。 此外,你也可以使用搜索条件(如发件人、收件人、主题等)来过滤邮件,只获取你需要的邮件。例如: ```java SearchTerm searchTerm = new SubjectTerm("Testing JavaMail"); Message[] messages = folder.search(searchTerm); ``` 这将只获取主题为“Testing JavaMail”的邮件。你可以根据自己的需求,设置不同的搜索条件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值