山崎屋の技術メモ

IT業界で働く中でテクノロジーを愛するSIerのシステムエンジニア👨‍💻 | AndroidとWebアプリの二刀流🧙‍♂️ | コードの裏にあるストーリーを綴るブログ執筆者✍️ | 日々進化するデジタル世界で学び続ける探究者🚀 | #TechLover #CodeArtisan、気になること、メモしておきたいことを書いていきます。

【Java】 Java Mail で Gmail のサーバからメールを送信する

Java でメールを送信します。メールサーバは Gmail を拝借します。

注意事項としてGoogle アカウントの設定で「安全性の低いアプリのアクセス」を許可する必要があります。

f:id:yyama1556:20210508112814p:plain

これを許可しておかないと、次のようなエラーとなります。

javax.mail.AuthenticationFailedException: 535-5.7.8 Username and Password not accepted. Learn more at
535 5.7.8  https://support.google.com/mail/?p=BadCredentials h9sm5853519pfv.14 - gsmtp

ソースコード

さっそくソースです。

package org.yyama;

import java.util.Properties;

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

public class Mail {
	public static void main(String[] args) {
		try {
			Properties property = new Properties();
			property.put("mail.smtp.host", "smtp.gmail.com");
			property.put("mail.smtp.auth", "true");
			property.put("mail.smtp.starttls.enable", "true");
			property.put("mail.smtp.host", "smtp.gmail.com");
			property.put("mail.smtp.port", "587");
			property.put("mail.smtp.debug", "true");

			Session session = Session.getInstance(property, new javax.mail.Authenticator() {
				protected PasswordAuthentication getPasswordAuthentication() {
					return new PasswordAuthentication("Gmailのアカウント", "Gmailのパスワード");
				}
			});
			
			MimeMessage mimeMessage = new MimeMessage(session);
			InternetAddress toAddress = new InternetAddress("受信者メールアドレス", "受信者名");
			mimeMessage.setRecipient(Message.RecipientType.TO, toAddress);
			InternetAddress fromAddress = new InternetAddress("送信者メールアドレス", "送信者名");
			mimeMessage.setFrom(fromAddress);
			mimeMessage.setSubject("title", "ISO-2022-JP");
			mimeMessage.setText("message", "ISO-2022-JP");
			Transport.send(mimeMessage);
			System.out.println("メール送信が完了しました。");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

javax.mail 等のパッケージを使うには別途ライブラリを準備する必要があります。Mavenを使用している場合は pom.xml に次のように依存関係を設定しておいてください。

		<dependency>
			<groupId>com.sun.mail</groupId>
			<artifactId>javax.mail</artifactId>
			<version>1.6.2</version>
		</dependency>

これでプログラムを実行すると、次のような簡単なメールが送信されます。

f:id:yyama1556:20210508114123p:plain

本日はここまでとなります。お疲れさまでした。

独習Java 新版

独習Java 新版

徹底攻略Java SE 11 Silver問題集[1Z0-815]対応

徹底攻略Java SE 11 Silver問題集[1Z0-815]対応

  • 作者:志賀 澄人
  • 発売日: 2019/10/18
  • メディア: 単行本(ソフトカバー)