最开始的java代码如下
该程序连接163邮箱时是正常的,但连接qq邮箱时会出错。
调用session.setDebug(true);后发现连qq邮箱的debug信息如下
上Google搜“java mail imap qq 邮箱”,发现《JavaMail中接收邮件的问题 》里提到,需要设置mail.imap.auth.plain.disable为true,但设置完后仍会出错。
继续搜mail.imap.auth.plain.disable,在api文档 中发现另外一个属性mail.imap.auth.login.disable,文档中提到“If true, prevents use of the non-standard AUTHENTICATE LOGIN
command, instead using the plain LOGIN
command. Default is false.”,而根据debug信息,连接qq邮箱也是在A0 AUTHENTICATE LOGIN之后提示错误,所以明显是这个参数的问题。
设置参数mail.imap.auth.login.disable为true后连接qq邮箱正常,最终程序如下
正确的debug信息如下