◾️ 最初に
今回Javaでメールを送信してみようと思いましたが、調べてみると古い記事だったり、実装方法が様々だったりで混乱してゴールに辿り着けそうになかったので、"ChatGPT"に頼って実装しました。
※自分→自分 という形でメールを送信しています。
また、実務で使う場合には今回載せているソースに加えて、下記項目を考慮する必要が出てくると思います。
その時が来たらまた調べてみようと思います。
・同期/非同期処理(バッチ処理)の選定
・ログ/モニタリング設定
・エラーハンドリング
・セキュリティ etc...
◾️ Javaでメールを送信する方法
・使用ライブラリ
JavaMail
∟ javax.mail-1.6.2.jar
∟ javax.activation.jar
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 );
}
}
}
◾️ 参照資料