はじめに
業務自動化や通知処理において、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段階認証が有効である必要があります。以下の手順で「アプリパスワード」を生成してください:
- Googleアカウントにログイン
- [セキュリティ] > [アプリパスワード]
- アプリの種類「メール」、デバイス名「JavaApp」など任意で指定
- 表示された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:
方式で埋め込み画像にも対応可能です。