<dependencies>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-context-support -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<!-- Random String 생성 (이메일 인증코드 생성) -->
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
</dependency>
<!-- 이메일 전송 API(javax.mail + spring=context-support) -->
<!-- https://mvnrepository.com/artifact/javax.mail/javax.mail-api -->
<!-- https://mvnrepository.com/artifact/com.sun.mail/javax.mail -->
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.6.2</version>
</dependency>
이 3가지를 넣어준다 .
RandomString을 생성해 주는 메소드와 메일을 보내주는 메서드를 만든다.
package com.gdu.myhome.util;
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;
/*
* google 계정으로 이메일 보내기 위해서 앱 비밀번호를 생성해 둬야 한다.
*
* 1. 구글에 로그인한다.
* 2. [계정]- [보안]
* 3. [2단계인증]-[앱 비밀번호]-[App name] : myhome 입력
* 4. 생성된 비밀번호를 복사해서 email.properties에 복사
*/
@PropertySource(value="classpath:email.properties")
@Component
public class MyjavaMailUtils {
@Autowired
private Environment env;
public void sendJavaMail(String to, String subject, String content) {
try {
//Properties 객체 생성(이메일 보내는 호스트 정보 )
Properties properties = new Properties();
properties.put("mail.smtp.host", env.getProperty("spring.mail.host"));
properties.put("mail.smtp.port", env.getProperty("spring.mail.port"));
properties.put("mail.smtp.auth", env.getProperty("spring.mail.properties.mail.smtp.auth"));
properties.put("mail.smtp.starttls.enable", env.getProperty("spring.mail.properties.mail.smtp.starttls.enable"));
// javax.mail.Session 객체 생성(이메일 보내는 사용자 정보)
Session session = Session.getInstance(properties, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(env.getProperty("spring.mail.username"), env.getProperty("spring.mail.password"));
}
});
// 메일 만들기 ( 보내는 사람 + 받는 사람 + 제목 + 내용)
MimeMessage mimeMessage = new MimeMessage(session);
mimeMessage.setFrom(new InternetAddress(env.getProperty("spring.mail.username"), env.getProperty("spring.mail.password")));
mimeMessage.setRecipient(Message.RecipientType.TO, new InternetAddress(to));
mimeMessage.setSubject(subject);
mimeMessage.setContent(content, "text/html; charset=UTF-8");
//메일 보내기
Transport.send(mimeMessage);
} catch (Exception e) {
e.printStackTrace();
}
}
}