Javaでメールを送信しようとしています。コードは次のとおりです。
String mailSmtpHost = "smtp.example.com";
String mailTo = "[email protected]";
String mailFrom = "[email protected]";
String mailSubject = "Email subject";
String mailText = "Some text";
Properties properties = new Properties();
properties.put("mail.smtp.Host", mailSmtpHost);
Session emailSession = Session.getDefaultInstance(properties);
try {
Message emailMessage = new MimeMessage(emailSession);
emailMessage.addRecipient(Message.RecipientType.TO, new InternetAddress(mailTo));
emailMessage.setFrom(new InternetAddress(mailFrom));
emailMessage.setSubject(mailSubject);
emailMessage.setText(mailText);
emailSession.setDebug(true);
Transport.send(emailMessage);
}catch(Exception e) {
System.out.println("Errore email: "+e.toString());
}
プロジェクトをコンパイルすると、オンラインで:
Message emailMessage = new MimeMessage(emailSession);
...次のエラーが出ます:
Exception in thread "main" Java.lang.NoClassDefFoundError: javax/activation/DataHandler
注:Java -version: 9.0.4
を使用しています
JDK 9では、デフォルトでjavax。* APIの多くへのアクセスが無効になっていますが、javaxアクティベーションは非推奨になりました。
ただし、実行時にモジュールを追加することで解決できます
"--add-modules Java.activation".