永发信息网

用javamail搜索邮件搜不到结果

答案:3  悬赏:30  手机版
解决时间 2021-03-21 16:54
  • 提问者网友:未信
  • 2021-03-20 17:02
用下面的代码搜邮件,就是搜不到(条件符合的邮件是存在的),但是用not条件就可以,为什么啊
Folder folder = store.getFolder("inbox");

folder.open(Folder.READ_WRITE);

SearchTerm[] searchTerms = new SearchTerm[]{

new FromStringTerm(searchTerm),

new SubjectTerm(searchTerm),

new BodyTerm(searchTerm)

};

//SearchTerm st = new NotTerm(new FromStringTerm(searchTerm));

SearchTerm st = new OrTerm(searchTerms);

searchReMails = folder.search(st);
最佳答案
  • 五星知识达人网友:三千妖杀
  • 2021-03-20 17:43
Properties props = new Properties();
// 存储接收邮件服务器使用的协议,这里以POP3为例
props.setProperty("mail.store.protocol", "pop3");
// 设置接收邮件服务器的地址,这里还是以网易163为例
props.setProperty("mail.pop3.host", "pop3.163.com");
// 根据属性新建一个邮件会话.
Session session = Session.getInstance(props);
// 从会话对象中获得POP3协议的Store对象
Store store = session.getStore("pop3");
// 如果需要查看接收邮件的详细信息,需要设置Debug标志
session.setDebug(false);
String username = "?????";// @sina.cn
String password = "?????";
// 连接邮件服务器
store.connect("pop3.163.com", 110, username, password);
// 获取邮件服务器的收件箱
Folder folder = store.getFolder("INBOX");
// 以只读权限打开收件箱
folder.open(Folder.READ_ONLY);
// 获取收件箱中的邮件,也可以使用getMessage(int 邮件的编号)来获取具体某一封邮件
Message message[] = folder.getMessages();
PraseMimeMessage pmm = null;

System.out.println("邮件数量: " + message.length);
for (int i = 0, n = message.length; i < n; i++) {

System.out.println(((MimeMessage) message[i]).getContent());

pmm = new PraseMimeMessage((MimeMessage) message[i]);
System.out.println("主题 :" + pmm.getSubject());

}
// 关闭连接
folder.close(false);
store.close();
全部回答
  • 1楼网友:等灯
  • 2021-03-20 19:06
554表示“发送的邮件被对方服务器怀疑为垃圾邮件,拒绝接收。 建议自己搭建一个mail服务器来试试,目前大型的邮件服务器都会有反垃圾系统。
  • 2楼网友:英雄的欲望
  • 2021-03-20 18:37
你代码中的searchTerms 用如下方式实现就可以了。 // creates a search criterion SearchTerm searchTerms = new SearchTerm() { @Override public boolean match(Message message) { try { if (message.getSubject().contains("searchvalue")||message.getFrom()[0].toString().contains("searchvalue")) { return true; } } catch (MessagingException ex) { ex.printStackTrace(); } return false; } };
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯