在Oracl sslnotes中说,应该使用mail.imap.starttls.enable或mail.smtp.starttls.enable启用STARTTLS命令,以及#34; true"。 "设置后,如果服务器支持STARTTLS命令,它将是 在建立连接之后和发送任何登录之前使用 信息&#34 ;.所以,我按照建议设置了这个:
props.setProperty("mail.imap.starttls.enable", "true");
props.setProperty("mail.store.protocol", "imap");
props.setProperty("mail.imap.auth", "true");
props.setProperty("mail.imap.host", "imap.mail.ru");
Session session = Session.getInstance(props, new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(login + "@" + server, passwd);
}
});
session.setDebug( true);
Store store = session.getStore();
store.connect();
但是这里是对话:
* OK Welcome
A0 CAPABILITY
* CAPABILITY IMAP4rev1 ID XLIST UIDPLUS UNSELECT MOVE STARTTLS LIST-STATUS LOGINDISABLED
A0 OK CAPABILITY completed
A1 LOGIN tester@mail.ru tester <==== this string is edited
A1 NO [PRIVACYREQUIRED] Command disabled. Please use STARTTLS first.
据我所知,没有STARTTLS命令通过connect函数发送(尽管该命令应该发送&#34;在发送连接之后和发送任何登录信息之前#34;,如Oracle手册中所承诺的那样)。那么我该怎么做才能让代码发送这个STARTTLS?
答案 0 :(得分:0)
通过下载最新的javax.mail.jar解决。谢谢大家。