场景:目前需要定时收取某个账户的未读邮件,保存到elasticsearch doc中去。
使用javaMail收邮件主要有两种协议,一种是pop3,一种是imap。这两种协议都可以用来收邮件,但是在其中的处理上是有区别的。pop3是不支持判断邮件是否为已读的,也就是说你不能直接从收件箱里面取到未读邮件,这需要自己进行判断,然而imap就提供了这样的功能,使用imap时可以很轻松的判断该邮件是否为已读或未读或其他。
由此看来,pop3不适合我的需求【通过每次检索全部,然后判断subject也可以实现,不过每次都需要遍历对比,比较麻烦】
那么我就用imap协议来收取了,pop3和imap只是配置email的url有点区别 其他地方是一样的
pop3和imap主要区别就是能否判断邮件状态的问题,其他的操作都差不多.
准备工作:
邮箱设置打开pop3、imap、smtp收发协议
去你的126|163|qq邮箱 打开设置-pop3 如图
注意重点:
- 全部接收,不然30天以前的收不到还以为代码有问题
- 配置授权码,目前163和qq邮箱都是授权码形式,代码里的password位置填写的都是授权码而不是邮箱密码哦
协议的端口和协议规则
//协议的内容端口等区别,对应关系如图:
具体的实现代码
1 | package cn.northpark.utils; |