pom.xml
spring-boot-starter-email 추가
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
application.properties
SMTP 설정
spring.mail.host=smtp.naver.com
spring.mail.port=465 # naver 포트
spring.mail.username=송신용이메일@naver.com
spring.mail.password=송신용이메일의비밀번호
spring.mail.properties.debug=true
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.ssl.enable= true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.ssl.trust=smtp.naver.com
EmailConfig 파일 생성
import java.util.Properties;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.JavaMailSenderImpl;
@Configuration
@PropertySource("classpath:application.properties")
public class EmailConfig {
@Value("${spring.mail.username}")
private String id;
@Value("${spring.mail.password}")
private String password;
@Value("${spring.mail.host}")
private String host;
@Value("${spring.mail.port}")
private int port;
@Bean
public JavaMailSender javaMailService() {
JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
javaMailSender.setHost(host); // smtp 서버 주소
javaMailSender.setUsername(id); // 설정(발신) 메일 아이디
javaMailSender.setPassword(password); // 설정(발신) 메일 패스워드
javaMailSender.setPort(port); //smtp port
javaMailSender.setJavaMailProperties(getMailProperties()); // 메일 인증서버 정보 가져온다.
javaMailSender.setDefaultEncoding("UTF-8");
return javaMailSender;
}
private Properties getMailProperties() {
Properties properties = new Properties();
properties.setProperty("mail.transport.protocol", "smtp"); // 프로토콜 설정
properties.setProperty("mail.smtp.auth", "true"); // smtp 인증
properties.setProperty("mail.smtp.starttls.enable", "true"); // smtp starttls 사용
properties.setProperty("mail.debug", "true"); // 디버그 사용
properties.setProperty("mail.smtp.ssl.trust",host); // ssl 인증 서버 주소
properties.setProperty("mail.smtp.ssl.enable","true"); // ssl 사용
return properties;
}
}
Controller
@GetMapping(value = "/")
public ResponseEntity<?> method(...) throws Exception {
...생략
userService.sendSimpleMessage(to, content);
}
Service
@PropertySource("classpath:application.properties")
@Slf4j
@RequiredArgsConstructor
@Service
public class UserServiceImpl implements UserService {
final JavaMailSender javaMailSender; // final 키워드 필수
@Override
public void sendSimpleMessage(String to, String content) throws Exception {
MimeMessage message = createMessage(to, content);
try{
javaMailSender.send(message); // 메일 발송
}catch(MailException es){
es.printStackTrace();
throw new IllegalArgumentException();
}
}
@Override
public MimeMessage createMessage(String to, String content) throws MessagingException, UnsupportedEncodingException {
log.info("보내는 대상 : " + to);
log.info("content : " + content);
MimeMessage message = javaMailSender.createMimeMessage();
message.addRecipients(MimeMessage.RecipientType.TO, to); // to 보내는 대상
message.setSubject("메일 제목"); //메일 제목
// 메일 내용 메일의 subtype을 html로 지정하여 html문법 사용 가능
String msg="";
// 생략
msg += "<div>" + content + "</div>";
message.setText(msg, "utf-8", "html"); //내용, charset타입, subtype
message.setFrom(new InternetAddress(id,"admin")); //보내는 사람의 메일 주소, 보내는 사람 이름
return message;
}
}
'WEB > SPRING' 카테고리의 다른 글
배치 서비스 (0) | 2023.05.10 |
---|---|
Springboot properties 파일 분리 (local, prod, ...) (0) | 2023.03.17 |
[Spring] AOP 프로그래밍 (0) | 2022.06.03 |
[Spring] 빈(Bean) 🟢 (0) | 2022.06.03 |
[Spring] 컴포넌트 스캔 (0) | 2022.06.03 |
댓글