シンプル&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 経由のメール取得などがあります。
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)も従来のプロトコルとしてサポートされています。また、標準的なユーザー名/パスワード認証も提供し、ログインが必要なサーバーへの接続を容易にします。