1

次のコードを使用してメールを送信しようとしています:

...
Security.addProvider(new BouncyCastleProvider());
...
Properties props = new Properties();
props.put("mail.smtp.auth", "true");        
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.port", "587");
Session session = Session.getInstance(props,
      new javax.mail.Authenticator() {
        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication(username, password);
        }
      });
...
Transport t = session.getTransport("smtp");
try {
     t.connect();
     t.sendMessage(message, message.getAllRecipients());
     System.out.println("Done");
 } finally {
     t.close();
 }  
 ...     

ただし、次の例外がスローされます。

Exception in thread "main" java.lang.RuntimeException: javax.mail.MessagingException: Could not convert socket to TLS;
nested exception is:
java.net.SocketException: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl) 

プロバイダーを追加しないと問題なく動作しますが、他の問題のためにコードで必要になります。

//Security.addProvider(new BouncyCastleProvider());
4

0 に答える 0