0

我正在使用邮件开发一个简单的 Web 应用程序,以 MyEclipse8.0.1 和 Weblogic8.0 作为服务器。以下是我发送电子邮件的代码,它适用于控制台,但是当我使用 myeclipse 和 Weblogic 运行它时,它显示以下错误:

javax.mail.SendFailedException:发送失败;嵌套异常是:javax.mail.MessagingException:无法连接到 SMTP 主机:smtp.gmail.com,端口:465

这是我在jsp中的代码:

<%
try {
        Properties p = new Properties();
        p.put("mail.transport.protocol","smtp");
        p.put("mail.smtp.host","smtp.gmail.com");
        p.put("mail.smtp.port","465");  
        p.put("mail.smtp.auth","true");
        p.put("mail.smtp.debug","true");
        p.put("mail.smtp.starttls.enable", "true");
        p.put("mail.smtp.ssl.enable", "true");
        p.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");
        p.put("mail.smtp.socketFactory.port", "465");
        p.put("mail.smtp.socketFactory.fallback", "false");
        java.security.Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
        Session s = Session.getInstance(p,new javax.mail.Authenticator() {
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication("user","pass");}});
        Message msg = new MimeMessage(s);
        msg.setFrom(new InternetAddress("toaddr@gmail.com"));
        msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse("toAddr@gmail.com"));
        msg.setSentDate(new java.util.Date());
        msg.setSubject("MySub");
        msg.setText("Body");
        Transport.send(msg);
        out.println("Mail sent successfully");
}
catch (Exception e)
{
  //e.printStackTrace();
  System.out.println("Exception : " + e);
  out.println("Exception : " + e);
}


%>

这里发生的一件有趣的事情是,当我通过启动 MyEclipse Tomcat 服务器并运行代码来尝试相同的代码时,它成功地发送到我的 gmail 帐户,因为它正在从控制台程序工作。但是当我再次使用 Weblogic 8.0 尝试上述代码时,它显示异常“javax.mail.MessagingException:无法连接到 SMTP 主机:smtp.gmail.com,端口:465”。

我不知道出了什么问题,无论是在代码中还是在服务器中的某些特殊设置中。所以请高手指点一下。非常感谢,提前。

4

1 回答 1

0

JavaMail FAQ提供了调试连接问题的技巧

Tomcat 和 WebLogic 是否在同一台机器上运行?可能有防火墙或防病毒产品阻止您连接。

于 2013-01-07T20:21:33.740 回答