Java邮件无法连接到端口

时间:2014-07-03 04:08:13

标签: java email port

我正在尝试通过Java发送电子邮件,我之前已经这样做了,但我现在使用的ISP似乎已经阻止了所有端口,因为我有这个代码:

        Properties props = new Properties();
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.starttls.enable", "true");
        props.put("mail.smtp.host", "smtp.gmail.com");
        props.put("mail.smtp.port", "587"); 
        // tried props.put("mail.smtp.port", "25");
        //props.put("mail.smtp.port", "8889"); For my personal host setting   
        props.put("mail.smtp.timout", "10000");

问题是我一直得到Could not connect to port error,所以如果ISP阻止所有端口,是否有任何可能的方式来发送电子邮件或者万一,我的方法可能有问题。 (它适用于某些ISP,但不适用于运行代码所需的ISP)

1 个答案:

答案 0 :(得分:0)

如果有帮助(对于Gmail),请尝试使用此功能。

以下某些行可能不是必需的,但我没有测试每一行只使用这些键值对并且工作正常。

Properties props = new Properties();
    props.put("mail.smtp.user", senderEmailAddress);
    props.put("mail.smtp.host", "smtp.gmail.com");
    props.put("mail.smtp.port", "465");
    props.put("mail.smtp.starttls.enable","true");
    props.put("mail.smtp.auth", "true");
    props.put("mail.smtp.socketFactory.port", port_port);
    props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
    props.put("mail.smtp.socketFactory.fallback", "false");

    //SecurityManager security = System.getSecurityManager();

对于我的本地电子邮件,我使用过这个(非SSL)

System.setProperty("sun.security.ssl.allowUnsafeRenegotiation","true");
    Properties props = new Properties();
    props.put("mail.smtp.user", senderEmailAddress);
    props.put("mail.smtp.host", host_name); //for me : mail.mydomain.com
    props.put("mail.smtp.port", smtp_port); //mine is "25"
    props.put("mail.transport.protocol", "smtp");
    props.setProperty("mail.smtp.quitwait", "false");
    props.put("mail.smtp.auth", "true");
    //props.put("mail.smtp.starttls.enable","true");        
    //props.put("mail.smtp.socketFactory.port", smtp_port);
    //props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
    //props.put("mail.smtp.socketFactory.fallback", "false");

//SecurityManager security = System.getSecurityManager();