如何在java中从您的邮件服务器发送电子邮件

时间:2015-01-03 04:50:11

标签: java javamail javax.mail

这是我的代码......

    final String from = "demo@ourmail.com";
    final String password = "demo1234";

    Properties props = new Properties();
    props.put("mail.smtp.host", "14.141.48.131");
    props.put("mail.smtp.auth", "true");
    Session session = Session.getDefaultInstance(props,
            new javax.mail.Authenticator() {
                @Override
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication(from, password);
                }
            });

    try {

        String subject = "Registeration conformation for happy shopping";
        String to = demo@gmail.com;
        Message message = new MimeMessage(session);
        message.setFrom(new InternetAddress(from));
        message.setRecipients(Message.RecipientType.TO,
                InternetAddress.parse(to));
        message.setSubject(subject);
        message.setContent("<html>\n"
                + "<body>\n"
                + "\n"
                + "<p> you are successsfully login</p>"

                + "</body>\n"
                + "</html>", "text/html");
        Transport.send(message);
        System.out.println("end of utility");
    } catch (Exception ex) {
        System.out.println(ex);
    }

运行此操作后,会生成异常,即

javax.mail.MessagingException: Could not connect to SMTP host: 14.141.48.131, port: 25;
nested exception is:
java.net.SocketException: Permission denied: connect

请建议我如何处理此异常。

1 个答案:

答案 0 :(得分:0)

您的Java代码看起来很好。成功地与您的邮件服务器通信是困难的部分。

也许您正在运行Java 7,并且可能(每this个链接)可以通过设置这个简单的JVM参数来解决问题: -Djava.net.preferIPv4Stack=true

绝对检查您的防火墙(确保您的Java程序和邮件服务器之间的SMTP端口是打开的),并且一定要检查可能限制邮件服务器上的SMTP的任何防病毒程序。

或许您的邮件服务器需要SSL / TLS加密的SMTP端口465(而不是SMTP端口25)。

然后,也许您的ISP /互联网提供商根本不允许SMTP。

有一百万种可能性。与您的网络管理员联系。并尝试这些SMTP故障排除技巧(独立于调试Java程序):

PS:

永远不会 EVER !!!!发布真实用户名,密码...或IP地址。在 ANY 外部论坛。