第3章 メールを送信してみよう

3.2 メールを送ってみよう

実行結果

フォルダ構造

サンプルコード
【ファイル名:application.properties(以下を追記)】
# サーバーを指定(xserverのSMTPサーバーを利用)
spring.mail.host=sv5215.xserver.jp
# ポート番号
spring.mail.port=587
# サーバーにログインするメールアドレス(またはユーザー名)
spring.mail.username=test.sender@kanda-it-school-system.com
# サーバーにログインするパスワード
spring.mail.password=kandaSender-2024
# SMTP認証を有効にする設定
spring.mail.properties.mail.smtp.auth=true
# STARTTLSを有効にする設定
spring.mail.properties.mail.smtp.starttls.enable=true
【ファイル名:pom.xml】(追記)
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
</dependency>
【ファイル名:sendMail.html】
<!DOCTYPE html>
<html>

<head>
  <meta charset="UTF-8">
  <title>メールを送ってみよう</title>
</head>

<body>
  <p>メールを送信しました。</p>
</body>

</html>
【ファイル名:MailController.java】
package jp.co.f1.spring.mail;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.MailSender;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class MailController {

	@Autowired
	private MailSender mailSender;

	/*
	 * 「/sendMail」へアクセスがあった場合
	 */
	@GetMapping("/sendMail")
	public ModelAndView sendMail(ModelAndView mav) {

		SimpleMailMessage msg = new SimpleMailMessage();
		msg.setFrom("test.sender@kanda-it-school-system.com");

		msg.setTo("test.receiver@kanda-it-school-system.com");
		msg.setSubject("テストメール");
		msg.setText("メール送信完了");// Set Message
		mailSender.send(msg);

		mav.setViewName("sendMail");

		return mav;
	}
}

アプリケーションにアクセス

以下のアドレスからアプリケーションにアクセスします。
URL:http://localhost:8080/sendMail

解説
【application.properties】
# サーバーを指定(xserverのSMTPサーバーを利用)
spring.mail.host=sv5215.xserver.jp

今回使用するSMTPサーバーを指定しています。

今回はスクールが用意しているサーバーを指定しています。実業務では現場で用意されたサーバー情報に合わせてサーバーの指定を行ってください。

# ポート番号
spring.mail.port=587

ポート番号を指定します。ポート番号はアプリケーションを識別するための番号です。SMTPサーバーに接続する際には587番が使用されます。ここは詳細に理解する必要はないので『メール送信時に使うポート番号は587』程度の認識で大丈夫です。

# サーバーにログインするメールアドレス(またはユーザー名)
spring.mail.username=test.sender@kanda-it-school-system.com
# サーバーにログインするパスワード
spring.mail.password=kandaSender-2024
# SMTP認証を有効にする設定
spring.mail.properties.mail.smtp.auth=true

これはサーバーにログインする際に使用するログイン情報を渡しています。
また、spring.mail.properties.mail.smtp.authをtrueにすることで、ログイン情報をSMTPサーバーに送信しています。

# STARTTLSを有効にする設定
spring.mail.properties.mail.smtp.starttls.enable=true

STARTTLSは通信を安全に行うための設定です。ここも詳細に理解する必要はないので、『通信情報を暗号化している』程度の認識で大丈夫です。

【MailController.java】
// オブジェクト作成
SimpleMailMessage msg = new SimpleMailMessage();

SimpleMailMessageクラスをオブジェクト作成しています。このクラスはメールメッセージをモデル化したクラスとなっています。このクラスのオブジェクトmsgを作成し、「送信元」「送信先」「件名」「本文」を格納していきましょう。

// メール情報を格納したmsgオブジェクトをsendメソッドに渡す
mailSender.send(msg);

メール情報が格納されたオブジェクトmsgをmailSenderクラスのsendメソッドに渡しています。sendメソッドはメール送信処理を実行してくれます。

アプリケーションにアクセスすると、『メールを送信しました。』と表示されます。以下からメールの受信を確認してみましょう。

https://webmail.xserver.ne.jp/
ユーザー名:test.receiver@kanda-it-school-system.com
パスワード:kandaReceiver

NEXT>> 第4章 エラー実装をしてみよう