2012-01-31 102 views
7

我有gmail和雅虎工作,但不是hotmail。这是我的,我做错了什么?使用javamail从hotmail发送?

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); 

我试过端口25 + 587没有SSL的东西。我已经尝试使用SSL端口465。电子邮件和密码是正确的(我严格编码他们是肯定的)。

我没有收到任何错误...那么最新的问题是什么?

+0

使用方法,你有没有发现,从[这里]这个代码(http://stackoverflow.com/问题/ 2020088 /发送电子邮件在android-using-javamail-api-without-using-the-default-android-a/2033124#2033124) – Deepak 2012-02-16 20:20:44

+0

是的,就像我说过的,它对于Gmail和雅虎来说非常合适。 – VicVu 2012-02-16 20:22:37

+0

让我检查... – Deepak 2012-02-16 20:24:04

回答

19

1)使用调试输出:

session.setDebug(true); 

2)的Hotmail SMTP服务器开始在端口25或587非SSL连接和初始连接之后使用STARTTLS;因此删除行

props.put(“mail.smtp.socketFactory.port”,“587”);
props.put(“mail.smtp.socketFactory.class”,“javax.net.ssl.SSLSocketFactory”);

3)mimimum的设定量,则:

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"); 

这假定端口为25,否则添加props.put( “mail.smtp.port”, “587”);

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"); 

现在你连接的Transport

+2

Ahaaa!你刚从我的生活中消除了35%的压力。 – VicVu 2012-02-16 21:14:56

2

http://www.oracle.com/technetwork/java/javamail/faq/index.html#hotmail

摆脱所有的套接字工厂的东西,你不需要它。

+0

还有什么我需要摆脱? 当我删除它们时没有改变任何东西。 – VicVu 2012-01-31 20:56:22

+0

您是否阅读过常见问题解答?它会告诉你在事情不起作用时该怎么做。 – 2012-02-01 02:19:27

+0

不幸的是,事情仍然不起作用:C – VicVu 2012-02-02 17:03:17