2017-01-14 627 views
2

據說在Oracl sslnotes中,應該使用mail.imap.starttls.enable或mail.smtp.starttls來啓用STARTTLS命令。啓用,以「真實」。 「設置時,如果服務器支持STARTTLS命令,則在建立連接之後以及在發送任何登錄 信息之前將使用 」。所以,我設置的建議: 屬性「mail.imap.starttls.enable」,「true」不起作用

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 [email protected] tester <==== this string is edited 
A1 NO [PRIVACYREQUIRED] Command disabled. Please use STARTTLS first. 

據我所知沒有STARTTLS命令通過連接功能發送(儘管該命令應使連接後,可以發送」並在發送任何登錄信息之前「,如Oracle手冊中所承諾的)。那麼我該怎麼做才能讓代碼發送這個STARTTLS?

+0

你可以嘗試用true來指定'mail.imap.starttls.required'嗎? –

回答

0

通過下載最新的javax.mail.jar解決。謝謝大家。