Spring Boot で簡単に Gmail を送る方法

Spring Boot のライブラリ Spring Mail で Gmailからメールが送付できました。使い方さえ分かれば簡単でしたので、使い方をまとめます。今回確認したのは、任意かつ複数の宛先(To, Cc, Bcc)に対してメールを送付する方法です。

pom.xml

まずはライブラリを取得します。おなじみのMavenで取得します。次の dependency を追加します。

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-mail</artifactId>
</dependency>

次にMail送付の実行処理を書いていきます。

MailController.java

今回はControllerクラスに処理を書きました。画面から次のメソッドにアクセスされたら任意の宛先へメールを送付します。

package com.example.app;

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.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
public class MailController {

  public static final String LINE_SEPARATOR = System.getProperty("line.separator");

  @Autowired
  private MailSender mailSender;

  @RequestMapping(value = "/", method = RequestMethod.GET)
  public String index() {
    return "index";
  }

  @RequestMapping(value = "/", method = RequestMethod.POST)
  public String sendMail() {

      SimpleMailMessage msg = new SimpleMailMessage();
      msg.setTo(".................@accenture.com");// To
      msg.setBcc("................@yahoo.co.jp");// Bcc
      msg.setCc(new String[] { "................@accenture.com", "................@accenture.com" });// Cc Multiple Case

      String insertMessage = "Test from Spring Mail" + LINE_SEPARATOR;
      insertMessage += "Test from Spring Mail" + LINE_SEPARATOR;

      msg.setSubject("Test from Spring Mail");// Set Title
      msg.setText(insertMessage);// Set Message
      mailSender.send(msg);

    return "index";
  }

}

最後は設定です。

application.properties

これもお馴染み application.properties に設定を書きます。

spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.username=.................@gmail.com
spring.mail.password=**************
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true

注意事項

Gmailでメール送付する場合、application.properties に記述するパスワードはGmailにログインするときのパスワードではありません。プログラムからメール送付する用のパスワードを生成して、application.properties に書き込みます。

Let's share SNS