Java 邮件应用程序

标签 java email import dependencies

我只是想用 Java 创建一个简单的邮件应用程序。 并找到了如何对其进行编码,但我的导入似乎存在一些问题。

import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;

IntelliJ 建议将 Jave EE 6 JAR 添加到模块依赖项中。但这并没有帮助!也许您知道该怎么做。

最佳答案

Answer by Mustafa似乎正确但已过时。

Jakarta EE

JavaEEOracle 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/

相关文章:

java - Lucene 在多个字段上搜索但在任何字段上匹配

java - JTextField 中的文本不环绕

java - 如何解决android中CheckBoxPreference默认值的错误?

java - 在 Spring Boot Rest 中将 GET 请求参数与 DTO 对象映射时出现问题

javascript - 如何在 id ="result"不是无效电子邮件时显示文本?

html - 电子邮件中的动态 HTML 内容

c# - 由于 SMTP 异常,电子邮件未发送

python - 执行 import package.submodule 有什么好处?

java - 在 eclipse java 中组织导入

java - 将 JSON 导入 Eclipse 项目