1) use debug output:
session.setDebug(true);
2) hotmail smtp server starts non-ssl connection on port 25 or 587, and uses starttls after initial connection; thus remove lines
props.put("mail.smtp.socketFactory.port", "587");
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
3) mimimum amount of settings is then:
props.setProperty("mail.transport.protocol", "smtp");
props.setProperty("mail.host", "smtp.live.com");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.auth", "true");
this assumes port is 25, otherwise add props.put("mail.smtp.port", "587");
4) yet even nicer looks this:
...
props.put("mail.smtp.starttls.enable", "true");
Session session = Session.getDefaultInstance(props);
Transport trans = session.getTransport("smtp");
trans.connect("smtp.live.com", 25, "user", "pass");
now you're connected, use methods of Transport
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…