我正在使用邮件开发一个简单的 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”。
我不知道出了什么问题,无论是在代码中还是在服务器中的某些特殊设置中。所以请高手指点一下。非常感谢,提前。