Help us understand the problem. What is going on with this article?

Spring-bootからメールを送信するまで

More than 1 year has passed since last update.

目的

テキストだけのメールを送信する

googleの
二段階認証でどハマりしたため、メモ。

環境

IDE STS
Spring boot 1.3.1
メールの送信spring-boot-starter-mail

手順

プロジェクトの構成
スクリーンショット 2016-01-20 23.29.29.png
メール送信では、
・pom
・application.yml
・メール送信のためのjava
を編集する

pom

いくつかの方法があるが、今回はspring-boot-starter-mailを利用する
pomファイルに依存性を設定

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

メールの設定

application.ymlを編集する

application.yml
spring:
  datasource:
    driverClassName: org.h2.Driver
    url: jdbc:h2:file:/tmp/mvp_mitsumori01 #
    username: sa
    password:
  jpa:
    hibernate.ddl-auto: validate #
  thymeleaf.cache: false

  mail:
    host: smtp.gmail.com
    port: 587
    username: <googleのメールアドレス>
    password: <アプリパスワード>
    properties.mail.smtp.auth: true
    properties.mail.smtp.starttls.enable: true

datasourceは関係ない
mailの方に今回利用するgmailの設定を記載する

問題は、<アプリパスワード>ってなんだ
ということですが、googleの設定のところで後述

java

とりあえず送信の確認のため、
mainが実行されると同時にメールが送信されるようにする。

MailTest02Application.java
package com.example;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.mail.MailSender;
import org.springframework.mail.SimpleMailMessage;

@SpringBootApplication
public class MailTest02Application {

    public static void main(String[] args) {
        try (ConfigurableApplicationContext ctx = SpringApplication.run(MailTest02Application.class, args)) {
            ctx.getBean(MailTest02Application.class).sendMail();
        }
    }
    @Autowired
    private MailSender sender;

    public void sendMail() {
        SimpleMailMessage msg = new SimpleMailMessage();

        msg.setFrom("test@mail.com");
        msg.setTo("<メールアドレス>");
        msg.setSubject("テストメール"); //タイトルの設定
        msg.setText("Spring Boot より本文送信"); //本文の設定

        this.sender.send(msg);
    }
}

googleの設定

googleの「アカウント」から
スクリーンショット 2016-01-20 23.36.14.png

アカウントの管理のgoogleへのログインへ入り

スクリーンショット 2016-01-20 23.37.43.png
アプリパスワードを実行する
すると、
パスワードとなる対象のOSやアプリケーション(今回の場合メールを指定)を指定できるので、
当該アプリの設定で生成すると
パスワードが生成される。

これを、spring-bootからアクセス時利用する。

それが、application.ymlに設定した
<アプリパスワード>

今後これについて、次はファイル添付の方法等、出来るようになったらまとめる

参考

http://qiita.com/rubytomato@github/items/b106ff8011bcad60bce2

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした