第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