当前位置: 首页 > 知识库问答 >
问题:

如何修复ClassNotFoundException:com。太阳邮政util。邮件记录器?

戎泰
2023-03-14

我想发送电子邮件,我的代码如下

public static void main(String[] args) {

    final String username = "emailId@gmail.com";
    final String password = "password";

    Properties props = new Properties();
    props.put("mail.smtp.auth", "true");
    props.put("mail.smtp.starttls.enable", "true");
    props.put("mail.smtp.host", "smtp.gmail.com");
    props.put("mail.smtp.port", "587");

    Session session = Session.getInstance(props,
      new javax.mail.Authenticator() {
        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication(username, password);
        }
      });

    try {

        Message message = new MimeMessage(session);
        message.setFrom(new InternetAddress("from-email@gmail.com"));
        message.setRecipients(Message.RecipientType.TO,
            InternetAddress.parse("email1@google.com"));
        message.setSubject("Testing Subject");
        message.setText("Dear Mail Crawler,"
            + "\n\n No spam to my email, please!");

        Transport.send(message);

        System.out.println("Done");

    } catch (MessagingException e) {
        throw new RuntimeException(e);
    }
}

xml

<dependency>
    <groupId>javax.mail</groupId>
    <artifactId>javax.mail-api</artifactId>
    <version>1.5.5</version>
</dependency>

但有例外

Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/MailLogger
at javax.mail.Session.initLogger(Session.java:230)
at javax.mail.Session.<init>(Session.java:214)
at javax.mail.Session.getInstance(Session.java:251)
at com.smart21.spring.utils.MailTest.main(MailTest.java:26)
Caused by: java.lang.ClassNotFoundException: com.sun.mail.util.MailLogger
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

共有3个答案

傅嘉悦
2023-03-14

解决方案是使用正确的依赖关系。对于gradle:

// https://mvnrepository.com/artifact/javax.mail/mail
compile group: 'javax.mail', name: 'mail', version: '1.5.0-b01'
麻书
2023-03-14

这与java中的问题重复。lang.NoClassDefFoundError:com/sun/mail/util/MailLogger for JUnit Java mail测试用例和对我有用的答案:

        <dependency>
            <groupId>com.sun.mail</groupId>
            <artifactId>javax.mail</artifactId>
            <version>1.6.2</version>
        </dependency>

看见https://stackoverflow.com/a/16808343/1355930

华峰
2023-03-14

尝试从以下更改:

<groupId>javax.mail</groupId>

收件人:

<groupId>com.sun.mail</groupId>
 类似资料:
  • 我正在用JavaMail创建一个邮件客户端。我已经成功地收到了电子邮件,它们大部分都被输入了数据库。内容配置未正确输入数据库。我在将内联对象导入数据库时遇到问题。 以下是我已经编写并正在我的邮件客户端中实现的代码:** 收到以下错误代码: 这只发生在收到的gmail上。所有其他收到的邮件都工作正常。你能帮我解决这个问题吗?谢谢你

  • 错误: 通用域名格式。太阳邮政util。MailConnectException无法连接到主机、端口smtp。gmail。com,587超时-1嵌套异常是java。网ConnectException:连接被拒绝:连接 我的源代码是:

  • 我有一个包含JSON数组的JSON文件 测验json 我想针对endpoint测试JSON数组中的每个元素,以观察系统针对唯一有效负载的性能 目前我有 测试ervice.scala 我无法从作为JSON Gatling文档称JSON Feeder将数组的每个元素加载到一个记录集合中 https://gatling.io/docs/2.3/session/feeder/ 即: 并将正文设置为 问题是

  • 问题内容: 我正在编写一个特定于美国的Web应用程序,因此其他国家/地区用于邮政编码的格式并不重要。我有一份我们要加载到包含以下内容的数据库表中的邮政编码列表: 5位美国邮政编码 纬度 经度 usps分类代码 状态码 城市 邮政编码是主键,因为这是我要查询的内容。我开始使用中型int 5,但是它会截断前导零的邮政编码。 我考虑使用char5,但担心对char变量建立索引会对性能造成影响。 所以我的

  • 我正在开发一个Discord机器人,但当我尝试向频道发送消息时,它不起作用。 我尝试使用代码

  • 问题内容: 与此问题有些相关,但是在没有有关QuickBooks的明确答案的情况下,有人知道Java的地址解析器吗?可以获取非结构化地址信息并解析出地址行1、2和城市州邮政编码和国家/地区的信息吗? 问题答案: 我确实知道Google Maps网络服务可以 很好 地做到这一点。因此,如果要使用它,可以节省很多精力。 真正的问题是,您需要一个包含城市/国家/地区名称的全球数据库来有效地解析非结构化地