MyEclipse8.0.1 と Weblogic8.0 をサーバーとして、メールを使用して単純な Web アプリケーションを開発しています。以下は、電子メールを送信するための私のコードです。コンソールではうまく機能しますが、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);
}
%>
ここで起こった興味深いことの 1 つは、MyEclipse Tomcat サーバーを起動してコードを実行して同じコードを試したところ、コンソール プログラムから作業していたので、Gmail アカウントに正常に送信されたことです。しかし、Weblogic 8.0 で上記のコードを試してみると、「javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 465」という例外が表示されました。
コードであれ、サーバーの特別な設定であれ、何が問題なのかわかりません。ですから、専門家をお願いします、私を導いてください。よろしくお願いします。