3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【 Java 】JavaMailを使ったメール送信

Last updated at Posted at 2023-08-13

◾️ 最初に

今回Javaでメールを送信してみようと思いましたが、調べてみると古い記事だったり、実装方法が様々だったりで混乱してゴールに辿り着けそうになかったので、"ChatGPT"に頼って実装しました。
※自分→自分 という形でメールを送信しています。

また、実務で使う場合には今回載せているソースに加えて、下記項目を考慮する必要が出てくると思います。
その時が来たらまた調べてみようと思います。

  ・同期/非同期処理(バッチ処理)の選定
  ・ログ/モニタリング設定
  ・エラーハンドリング
  ・セキュリティ etc...


◾️ Javaでメールを送信する方法

・使用ライブラリ
 JavaMail
   ∟ javax.mail-1.6.2.jar
   ∟ javax.activation.jar

・GmailでSMTP送信する際の認証設定
※自分の場合、以下対応が別途必要でした。詳しい設定等は、参照資料へ...
  - 2段階認証
  - パスワードに設定する値を、Gmailのパスワードから"アプリパスワード"に置き換える
スクリーンショット 2023-08-13 13.03.51.png

mail.properties
mailaddress= 自分のメールアドレス
password= アプリパスワード
mail.smtp.auth=true
mail.smtp.starttls.enable=true
mail.smtp.host=smtp.gmail.com
mail.smtp.port=587
メール送信
import java.io.FileReader;
import java.util.Properties;

import java.io.IOException;
import java.io.FileNotFoundException;
import javax.mail.MessagingException;

import javax.mail.Session;
import javax.mail.Message;
import javax.mail.Transport;
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.InternetAddress;

public class MailSender {

	public static void main(String[] args) throws IOException, FileNotFoundException{
		
		// プロパティファイルから認証に使用するデータを取得
		Properties prop = new Properties();
		prop.load(new FileReader("src/setting/mail.properties"));
		
		// 送信元のGmailアドレス
		final String username = prop.getProperty("mailaddress");
		// Gmailのアカウントのアプリパスワード
		final String password = prop.getProperty("password");

		// SMTPサーバへの認証とメールセッションの作成 
		// ※メールセッション = メールの送信に関するパラメータや設定を保持
		Session session = Session.getInstance(prop, new Authenticator() {
			protected PasswordAuthentication getPasswordAuthentication() {
				return new PasswordAuthentication(username, password);
			}
		});

		try {
			// メール送信準備
			Message message = new MimeMessage(session);
			// 送信元の設定
			message.setFrom(new InternetAddress(username));
			// 送信先の設定
			message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(prop.getProperty(username)));
			// 件名の設定
			message.setSubject("JavaMail Test");
			// 本文の設定
			message.setText("This is a test email sent from JavaMail.");

			// メールの送信
			Transport.send(message);
			// 成功時のメッセージ
			System.out.println("Email sent successfully.");
		} catch (MessagingException e) {
			// 失敗時のメッセージ
			System.err.println("Email sent unsuccessfully : " + e );
		}
	}
}

◾️ 参照資料

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?