1. 製品
  2.   Eメール
  3.   Java
  4.   JavaMail
 
  

シンプル&HTMLベースメール送信のための無料 Java API

添付ファイル、埋め込み画像、SMTP、IMAP、POP3 プロトコルサポート、そして高度なセキュリティを備えた、テキストおよび HTML ベースのメールメッセージを作成・送信するオープンソース Java メール処理 API。

JavaMail とは?

エンタープライズアプリケーションや自動化システムの世界では、プログラムでメールを送受信できることは単なる便利機能ではなく必須要件です。パスワードリセットや注文確認メールの送信、サポートチケットの自動処理など、メール統合はコア機能です。Java 開発者にとって、この機能の基盤となっているのが、堅牢なオープンソースの JavaMail API です。本製品ページでは JavaMail API の概要、強力な機能、そして Java アプリケーションでメール統合を始めるための実用的なコード例を紹介します。

JavaMail API は、Oracle(旧 Sun Microsystems)提供の成熟したオープンソースフレームワークで、プラットフォーム非依存・プロトコル非依存のメール・メッセージングアプリケーション構築を支援します。Java エコシステムにおけるメール処理の標準 API であり、SMTP、POP3、IMAP といった基盤プロトコルの複雑さを抽象化し、クリーンなオブジェクト指向インターフェースを提供します。主な機能として、HTML メールの作成・送信、添付ファイルの追加、インライン画像の挿入、マルチパートコンテンツ、強力な認証・セキュリティ、フォルダー単位のメール操作、検索・フィルタリング、SMTP 経由のメール取得などがあります。

Previous Next

JavaMail の開始方法

まずは JDK 1.6 以上をインストールしてください。次に pom.xml に以下の Maven 依存関係を追加します。

Maven 依存関係

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

ライブラリは GitHub のページから直接ダウンロードできます。

Java ライブラリによるメールメッセージ送信

オープンソースの JavaMail ライブラリは、シンプルなメールだけでなく HTML メールの作成・送信もサポートします。開発者は既存メールの読み取り、ファイルや画像の添付、複数ユーザーへの送信、カスタムヘッダーの追加などが可能です。ホスト名、ポート、認証や TLS の有効化といった接続パラメータを定義する必要があります。以下の例は、SMTP サーバー(例: Gmail)を使用して基本的なプレーンテキストメールを送信する方法を示しています。

SMTP サーバー経由でプレーンテキストメールを送信する方法(Java API)


import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.*;

public class SimpleEmailSender {

    public static void main(String[] args) {
        // 送信者と受信者のメールアドレス
        String from = "your.email@gmail.com";
        String to = "recipient.email@example.com";
        
        // SMTP サーバー設定(Gmail 用)
        String host = "smtp.gmail.com";
        final String username = "your.email@gmail.com";
        final String password = "your-app-password"; // Gmail 用アプリパスワードを使用

        // メールサーバーのプロパティ設定
        Properties properties = new Properties();
        properties.put("mail.smtp.auth", "true");
        properties.put("mail.smtp.starttls.enable", "true"); // TLS を使用
        properties.put("mail.smtp.host", host);
        properties.put("mail.smtp.port", "587");

        // Session オブジェクト取得(認証情報を渡す)
        Session session = Session.getInstance(properties, new javax.mail.Authenticator() {
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(username, password);
            }
        });

        try {
            // デフォルトの MimeMessage オブジェクト作成
            Message message = new MimeMessage(session);
            
            // From ヘッダー設定
            message.setFrom(new InternetAddress(from));
            
            // To ヘッダー設定
            message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
            
            // Subject ヘッダー設定
            message.setSubject("Hello from JavaMail API");
            
            // 本文設定
            message.setText("This is a test email sent programmatically using the JavaMail API.");

            // メール送信
            Transport.send(message);
            System.out.println("Email sent successfully!");

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

Java におけるメール検索とフィルタリング

オープンソースの JavaMail ライブラリは、フォルダー内のメールを送信者、件名、日付、フラグなど様々な条件で検索するフルサポートを提供します。メールクライアントや自動化ツールの開発に非常に有用です。AndTerm、OrTerm、NotTerm を使って複数条件の組み合わせも可能です。以下の例は、特定の送信者からのメッセージを検索する方法を示します。

Java アプリで特定送信者からのメッセージを検索する方法


Store store = session.getStore("imap");
store.connect("imap.example.com", username, password);

Folder inbox = store.getFolder("INBOX");
inbox.open(Folder.READ_ONLY);

// 特定送信者からのメッセージを検索
SearchTerm senderTerm = new FromStringTerm("alerts@example.com");
Message[] found = inbox.search(senderTerm);

for (Message m : found) {
    System.out.println("Subject: " + m.getSubject());
}

inbox.close(false);
store.close();

SMTP、IMAP、POP3 プロトコルのサポート

オープンソースの JavaMail はデフォルトで、メール送信に使われる SMTP(Simple Mail Transfer Protocol)、シンプルな受信に使われる POP3(Post Office Protocol 3)、そしてフォルダー単位の高度なアクセスが可能な IMAP(Internet Message Access Protocol)という 3 つの主要プロトコルをサポートします。さらに、SMTPS、POP3S、IMAPS といったセキュア版もサポートし、カスタムプロバイダーへの拡張も可能です。

Java における高度な認証とセキュリティ

オープンソースの JavaMail はメールサーバーとの安全な通信をサポートし、現在のセキュリティ志向の環境で不可欠です。TLS(Transport Layer Security)によりアプリケーションとメールサーバー間の通信が暗号化され、SSL(Secure Sockets Layer)も従来のプロトコルとしてサポートされています。また、標準的なユーザー名/パスワード認証も提供し、ログインが必要なサーバーへの接続を容易にします。

 日本