我只是想用 Java 创建一个简单的邮件应用程序。 并找到了如何对其进行编码,但我的导入似乎存在一些问题。
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
IntelliJ 建议将 Jave EE 6 JAR 添加到模块依赖项中。但这并没有帮助!也许您知道该怎么做。
最佳答案
Answer by Mustafa似乎正确但已过时。
Jakarta EE
JavaEE 归 Oracle Corporation 所有. JavaMail 是 JavaEE 的一部分,JavaEE 是其中包含的几十种技术之一。
多年前,Oracle 将所有权转让给了 Eclipse Foundation .
- 名称从 JavaEE 更改为 Jakarta EE。
- JavaMail 将其名称更改为 Jakarta Mail .
- 在最新版本中,包名称已更改,从
javax.*
更改为jakarta.*
。
Jakarta 邮件
规范
找到 Jakarta Mail specifications list .当前版本是 Jakarta Mail 2.0 .
实现
至少存在一种实现方式:Eclipse Jakarta Mail .
其他人也可以自由编写实现。不知道大家有没有。
例子
我自己没有使用过 Jakarta Mail,但你的问题让我很好奇。所以我把这个依赖:
<!-- https://mvnrepository.com/artifact/com.sun.mail/jakarta.mail -->
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>jakarta.mail</artifactId>
<version>2.0.1</version>
</dependency>
...进入这个 Maven POM:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns = "http://maven.apache.org/POM/4.0.0"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>work.basil.example</groupId>
<artifactId>JMail</artifactId>
<version>1.0-SNAPSHOT</version>
<name>JMail</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.release>17</maven.compiler.release>
</properties>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.8.1</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/com.sun.mail/jakarta.mail -->
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>jakarta.mail</artifactId>
<version>2.0.1</version>
</dependency>
</dependencies>
<build>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.2.0</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M5</version>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>3.2.0</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>3.0.0-M1</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>3.0.0-M1</version>
</plugin>
<!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
<plugin>
<artifactId>maven-site-plugin</artifactId>
<version>3.9.1</version>
</plugin>
<plugin>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>3.1.2</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
…创建一个小项目。我从 here 添加了 Registry
类,提供了一个链接 here .
小提示:我修正了一个拼写错误,根据 Java 命名约定将类名从 registry
更改为 Registry
。
请注意该文件的导入使用 jakarta.*
包命名。
import java.util.*;
import jakarta.mail.*;
import jakarta.mail.internet.*;
Registry
类可以编译,但我没有运行它。
部署
如果您正在编写一个独立的应用程序,您需要包含一个包含实现的 JAR。您可以将该 JAR 作为您的应用程序的一部分发布,前提是您可以遵守其许可。
如果您正在编写要部署在 Jakarta EE 服务上的 Web 应用程序或 Web 服务,那么您需要更改 Maven POM 以单独使用 Jakarta Mail API 而无需实现。该实现将在运行时由您选择部署的 Jakarta EE 兼容服务器产品提供。
关于Java 邮件应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69560796/