JavaからGmailを送信する方法【添付ファイル・HTML対応】

はじめに

業務自動化や通知処理において、JavaからGmail経由でメールを送信したいケースは少なくありません。本記事では、JavaでSMTPを利用して、Gmailからメールを送信する方法を、テキストメール・HTMLメール・添付ファイル付きメールそれぞれ実例付きで解説します。


前提条件

  • Java 8以上
  • Gmailアカウント(アプリパスワード発行済み)
  • JavaMailライブラリの導入

Maven依存関係の追加(JavaMail)

<dependency>
  <groupId>com.sun.mail</groupId>
  <artifactId>jakarta.mail</artifactId>
  <version>2.0.1</version>
</dependency>

Gmailでアプリパスワードを取得

Googleアカウントの2段階認証が有効である必要があります。以下の手順で「アプリパスワード」を生成してください:

  1. Googleアカウントにログイン
  2. [セキュリティ] > [アプリパスワード]
  3. アプリの種類「メール」、デバイス名「JavaApp」など任意で指定
  4. 表示された16桁のパスワードをメモ

Javaでテキストメールを送信する方法

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

public class GmailTextSender {
  public static void main(String[] args) throws Exception {
    final String username = "your-email@gmail.com";
    final String password = "your-app-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 Authenticator() {
      protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication(username, password);
      }
    });

    Message message = new MimeMessage(session);
    message.setFrom(new InternetAddress(username));
    message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("recipient@example.com"));
    message.setSubject("テストメール");
    message.setText("Javaから送信されたテキストメールです。");

    Transport.send(message);
    System.out.println("メール送信完了");
  }
}

HTMLメールを送信する方法

message.setContent("<h1>JavaからのHTMLメール</h1><p>こんにちは!</p>", "text/html; charset=utf-8");

テキストではなくHTMLコンテンツを本文にしたい場合は、setText()の代わりにsetContent()を使用します。


添付ファイル付きメールを送信する方法

MimeBodyPart textPart = new MimeBodyPart();
textPart.setText("添付ファイルをご確認ください。", "utf-8");

MimeBodyPart filePart = new MimeBodyPart();
filePart.attachFile("path/to/your/file.pdf");

Multipart multipart = new MimeMultipart();
multipart.addBodyPart(textPart);
multipart.addBodyPart(filePart);

message.setContent(multipart);

実行時の注意点

  • Gmailの送信制限に注意(1日500件程度)
  • 迷惑メールに分類される可能性があるため、件名や送信頻度に配慮
  • GmailのSMTP仕様に準拠する必要がある(TLS必須)

まとめ

JavaからGmailを使ってメールを送信するには、JavaMailライブラリとGoogleのアプリパスワードを使うことで、比較的簡単に実現できます。通知や帳票の自動送信など、さまざまな業務シナリオで活用可能です。


よくある質問

Q. Gmailでログインエラーが出ます。
→ アプリパスワードを正しく使用しているか、2段階認証が有効になっているか確認しましょう。

Q. HTML形式で画像も送れますか?
cid:方式で埋め込み画像にも対応可能です。

タイトルとURLをコピーしました