[英]Using javamail to send from hotmail?
I've got gmail and yahoo working, but not hotmail. 我有gmail和yahoo工作,但不是hotmail。 Here's what I have, what am I doing wrong?
这就是我拥有的,我做错了什么?
private String mailhost = "smtp.live.com";
public hotmailSenderActivity(String user, String password) {
this.user = user;
this.password = password;
//This connects to the actual mailserver
Security.addProvider(new com.provider.JSSEProvider());
Properties props = new Properties();
props.setProperty("mail.transport.protocol", "smtp");
props.setProperty("mail.host", mailhost);
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", "587");
props.put("mail.smtp.socketFactory.port", "587");
props.put("mail.smtp.socketFactory.class",
"javax.net.ssl.SSLSocketFactory");
props.put("smtp.starttls.enable", "true");
props.put("mail.smtp.socketFactory.fallback", "false");
props.setProperty("mail.smtp.quitwait", "false");
session = Session.getDefaultInstance(props, this);
I have tried port 25 + 587 without the SSL stuff. 我尝试过端口25 + 587没有SSL的东西。 I have tried port 465 WITH the SSL stuff.
我已尝试使用SSL端口465。 The email and password are correct (Ive hard coded them to be sure).
电子邮件和密码是正确的(我已经硬编码确认)。
I don't receive any errors... So whats the problem? 我没有收到任何错误......那么问题是什么?
1) use debug output: 1)使用调试输出:
session.setDebug(true);
2) hotmail smtp server starts non-ssl connection on port 25 or 587, and uses starttls after initial connection; 2)hotmail smtp服务器在端口25或587上启动非ssl连接,并在初始连接后使用starttls; thus remove lines
从而删除线条
props.put("mail.smtp.socketFactory.port", "587");
props.put(“mail.smtp.socketFactory.port”,“587”);
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.put(“mail.smtp.socketFactory.class”,“javax.net.ssl.SSLSocketFactory”);
3) mimimum amount of settings is then: 3)最小设置量是:
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"); 假设端口为25,否则添加props.put(“mail.smtp.port”,“587”);
4) yet even nicer looks this: 4)但更好看这个:
...
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 现在你已经连接,使用Transport的方法
http://www.oracle.com/technetwork/java/javamail/faq/index.html#hotmail http://www.oracle.com/technetwork/java/javamail/faq/index.html#hotmail
Get rid of all that socket factory stuff, you don't need it. 摆脱所有套接字工厂的东西,你不需要它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.