Java Mail 找不到类 MimeMessage

这是类Mail的代码(里面有一个main但是原因很简单,用这种方式解决这个问题似乎很简单):


import javax.mail.Message;

import javax.mail.MessagingException;

import javax.mail.Session;

import javax.mail.Transport;

import javax.mail.internet.InternetAddress;

import javax.mail.internet.MimeMessage;

import java.util.Properties;


public class Mail {


    public static void main(String [] args) {

    // Recipient's email ID needs to be mentioned.

    String to = "abcd@gmail.com";


    // Sender's email ID needs to be mentioned

    String from = "mail";

    String psw = "password";


    // Assuming you are sending email from localhost

    String host = "localhost";


    // Get system properties

    Properties properties = System.getProperties();


    // Setup mail server

    properties.setProperty("mail.smtps.host", host);

    properties.setProperty("mail.user", from);

    properties.setProperty("mail.password", psw);


    // Get the default Session object.

    Session session = Session.getDefaultInstance(properties);


    try {

        // Create a default MimeMessage object.

        MimeMessage message = new MimeMessage(session);


        // Set From: header field of the header.

        message.setFrom(new InternetAddress(from));


        // Set To: header field of the header.

        message.addRecipient(Message.RecipientType.TO, new                        InternetAddress(to));

    }

  }

}

这是我在运行后看到的终端:


Exception in thread "main" java.lang.NoClassDefFoundError: javax/activation/DataSource

    at Mail.main(Mail.java:35)

Caused by: java.lang.ClassNotFoundException: javax.activation.DataSource

at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)

at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:190)

at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499)

... 1 more


Process finished with exit code 1

错误是:


MimeMessage message = new MimeMessage(session);


呼唤远方
浏览 827回答 2
2回答

幕布斯6054654

您要么需要告诉 JDK 9 公开包含但隐藏的 java.activation 模块,要么需要在项目中明确包含 JavaBeans Activation Framework (JAF; javax.activation) jar 文件。通过添加--add-modules java.activation到java命令行来执行前者。后者可以通过使用此 Maven 依赖项来完成:<dependency>&nbsp; <groupId>com.sun.activation</groupId>&nbsp; <artifactId>javax.activation</artifactId>&nbsp; <version>1.2.0</version></dependency>
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java