我正在使用邮件开发一个简单的Web应用程序,MyEclipse8.0.1和Weblogic8.0作为服务器。以下是我发送电子邮件的代码,它适用于控制台但是当我使用myeclipse和Weblogic运行它时,它显示以下错误:
javax.mail.SendFailedException:发送失败;嵌套异常是:javax.mail.MessagingException:无法连接到SMTP主机:smtp.gmail.com,port: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,port:465”。
我不知道出现了什么问题,无论是在代码中还是在服务器中的某些特殊设置中。所以请请专家指导我。 非常感谢,提前。
答案 0 :(得分:0)
JavaMail FAQ有tips for debugging connection problems。
Tomcat和WebLogic是否在同一台机器上运行?可能存在阻止您连接的防火墙或防病毒产品。