Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 시(hour)
- 분(minute)
- list
- SpringBoot
- SSL설정
- 시간더하기
- 곱 최대값
- 파사드패턴
- ThreeWayPartition
- 생년
- 자바
- oracle
- Flyweight Pattern
- degien pattern
- 알고리즘
- 조인
- jQuery
- spring
- 자바스크립트
- 디자인패턴
- json
- 널체크
- 병합정렬
- 매일프로그래밍
- java
- 초(second)
- 스트레티지패턴
- map
- boot
- JavaScript
Archives
- Today
- Total
만들어가는 세상
[SPRINGBOOT] SPRING BOOT &GRADLE Google SMTP EMAIL 서버 전송 로직입니다. 본문
[SPRINGBOOT] SPRING BOOT&GRADLE Google SMTP EMAIL 서버 전송 로직입니다.
우선 SMTP TEST를 위해 Google 계정과 \[Google에서 계정 엑세스 권한을 가진앱\] 보안 수준이 낮은 앱 허용: 사용으로 변경 합니다. 나의 Google 계정만 있으면 됩니다.
build.gradle 에서 dependencies 합니다.
compile('org.springframework.boot:spring-boot-starter-mail')
application.yml 여기에서는 로컬, 개발, 운영 서버 기준으로 동적 SMTP 주소값이 할당되기 떄문에 아래와 같이 처리합니다.
---
spring:
profiles: dev
system:
email-host: smtp.gmail.com
email-port: 587
email-id: id
email-pw: pw
---
spring:
profiles: prod
system:
email-host: smtp.gmail.com
email-port: 587
email-id: id
email-pw: pwd
---
spring:
profiles: test
system:
email-host: smtp.gmail.com
email-port: 587
email-id: id
email-pw: pwd
SystemProperties.java 동적 프로퍼티값을 JAVA파일로 선언합니다.
@Data
@ConfigurationProperties("system")
@Component
public class SystemProperties {
private String emailHost;
private int emailPort;
private String emailId;
private String emailPw;
}
MailSenderConfig.java 메일발송 준비를 위해 아래와같이 로직 처리를 합니다. 이제 동적 프로퍼티값이 메일 전송 준비를 합니다.
@Configuration
public class MailSenderConfig {
@Autowired
public SystemProperties systemProperties;
public JavaMailSenderImpl getJavaMailSender() {
JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
mailSender.setHost(systemProperties.getEmailHost());
mailSender.setPort(systemProperties.getEmailPort());
mailSender.setUsername(systemProperties.getEmailId());
mailSender.setPassword(systemProperties.getEmailPw());
Properties props = mailSender.getJavaMailProperties();
props.put("mail.transport.protocol", "smtp");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.debug", "true");
return mailSender;
}
}
EmailService.java 메일전송을 하는 서비스 로직 입니다.
@Service
@Slf4j
public class EmailService {
@Autowired
private MailSenderConfig mailSender;
public void sendEmail(Email email) {
MimeMessagePreparator messagePreparator = mimeMessage -> {
MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true, "UTF-8");
messageHelper.setFrom(email.getFromEmail());
messageHelper.setTo(InternetAddress.parse(email.getToEmail()));
messageHelper.setSubject(email.getSubject());
messageHelper.setText(email.getContent(),true);
};
try {
mailSender.getJavaMailSender().send(messagePreparator);
} catch (MailException e) {
log.error(e.getMessage());
}
}
}
InternetAddress.parse()
여러사람에게 메일을 보낼수 있도록 처리하는 메소드 입니다.
예) gos1004 <gos1004@email.com>,gos1005 <gos1004@email.com>,gos1006 <gos1004@email.com>
messageHelper.setText(email.getContent(),true);
에디터를 사용할 경우 HTML 형식 포맷을 처리를 할 경우 true 를 사용하면 됩니다.
메일 형식을 gos1004@email.com 이렇게 보낼수 있지만 id <gos1004@email.com> 이런식으로도 보낼수 있습니다.
SimpleMailMessage 객체를 사용하는 방법도 있지만 여러 옵션을 고려해야기때문에 MimeMessageHelper 객체를사용 하였습니다.
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
@Component
public class EmailService {
@Autowired
public JavaMailSender emailSender;
public void sendEmail(
String to, String subject, String text) {
...
SimpleMailMessage message = new SimpleMailMessage();
message.setTo(to);
message.setSubject(subject);
message.setText(text);
emailSender.send(message);
...
}
}
'IT > SPRING' 카테고리의 다른 글
[SPRING] 406 ERROR 발생시 대처 방법 (0) | 2019.11.26 |
---|---|
[SPRINGBOOT] SPRING BOOT&GRADLE Twitter Search, Oracle 등 관리 로직입니다. (0) | 2019.11.12 |
[SPRING] @RequestMapping 활용하기 (0) | 2019.11.08 |
[SPRING] REST FULL API 구현시 자주 사용되는 @RequestBody와 @ResponseBody 개념 (0) | 2019.11.08 |
[SPRING] SPRING BOOT 장점과 단점 (2) | 2018.06.26 |
Comments