m_shige1979のときどきITブログ

プログラムの勉強をしながら学習したことや経験したことをぼそぼそと書いていきます

Github(変なおっさんの顔でるので気をつけてね)

https://github.com/mshige1979

Spring Bootでメールを送信する

Spring Bootでメールを送信する

今回の送信は簡単な平分を送信するだけ

メールサーバ

Gmailをリレーする

設定

application.properties
# port
server.port=7777

# mail
spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.username=Gmailのメールアドレス
spring.mail.password=Gmailのパスワード
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true

※Spring Bootではここに値を設定する

pom.xml

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-freemarker</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-mail</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-thymeleaf</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web-services</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

メール送信

MailSampleController.java
package com.example.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MailSampleController {
	
	private final JavaMailSender javaMailSender;

	@Autowired
	MailSampleController(JavaMailSender javaMailSender) {
		this.javaMailSender = javaMailSender;
	}
	
	@RequestMapping(value = "/mail/send", method = {RequestMethod.POST} )
	public String send() {
		
		SimpleMailMessage mailMessage = new SimpleMailMessage();

	    mailMessage.setTo("送信先のメールアドレス");
	    mailMessage.setReplyTo("リプライのメールアドレス");
	    mailMessage.setFrom("Fromのメールアドレス");
	    mailMessage.setSubject("テストメール");
	    mailMessage.setText("テストメールです、\nここから次の行\nおわりです\n");

	    javaMailSender.send(mailMessage);

		return "ok";
	}
	
}

このapiを叩けばメールを送信する。

結果

f:id:m_shige1979:20170107072733p:plain

所感

メール送信自体は今までなんどもあったけどローカルの開発環境で送信する手段があまり準備されていないことが多くて準備にドタバタしている感じになってしまう。テストとかする場合はもあるけどとりあえずはこれで…