반응형
Spring Boot 메일발송
Gmail
인터넷을 통해 이메일을 보내고 받을 수 있도록 Google에서 제공하는 무료 이메일 서비스 입니다.
Spring Boot Smtp
SMTP(Simple Mail Transfer Protocol)를 통해 이메일 메시지를 보내는 기본 지원을 제공합니다.
1. build.gradle / pom.xml
implementation 'org.springframework.boot:spring-boot-starter-mail'
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
2. application.properties / application.yml
#gmail
spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.username=아이디
spring.mail.password=비밀번호
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
spring.mail.properties.mail.smtp.auth=true
spring :
mail :
host : smtp.gmail.com
port : 587
username : 아이디
password : 비밀번호
properties :
mail :
smtp :
auth : true
starttls :
enable : true
3.EmailTemplate.java
- 메일발송을 위한 템플릿 파일을 관리하기위한 EmailTemplate.java 파일을 생성한다.
import org.springframework.stereotype.Service;
@Service("template")
public class EmailTemplate {
public EmailTemplate() {
super();
}
public String idFindTemplate() throws Exception{
StringBuffer sb = new StringBuffer();
sb.append("<!doctype html>");
sb.append("<html>");
sb.append("<head>");
....
중략
...
sb.append("</html>");
return sb.toString();
}
}
4. 메일발송처리 함수구현
- sendMail() 함수에서 실제로 메일을 발송한다.
import org.springframework.mail.MailAuthenticationException;
import org.springframework.mail.MailParseException;
import org.springframework.mail.MailSendException;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
...
@Autowired
private JavaMailSender mailSender;
@Autowired
private EmailTemplate template;
....
public boolean sendMail() throws Exception {
String content = template.idFindTemplate();
try {
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper messageHelper = new MimeMessageHelper(message, true, "UTF-8");
messageHelper.setFrom('보내는사람메일주소',"무슨무슨서비스");
/*** 받는사람 VO 관련 start ***/
//private String receiver;
//private String[] receiverArr;
messageHelper.setTo(vo.getReceiver()); //한명 발송됨
messageHelper.setTo(vo.getReceiverArr()); //여러명 발송됨
/*** 받는사람 관련 end ***/
messageHelper.setSubject('제목');
messageHelper.setText(content, true);
mailSender.send(message);
} catch (MailParseException ex) {
LOGGER.error("Sending Mail Exception : {} [failure when parsing the message]", ex.getCause());
return false;
} catch (MailAuthenticationException ex) {
LOGGER.error("Sending Mail Exception : {} [authentication failure]", ex.getCause());
return false;
} catch (MailSendException ex) {
LOGGER.error("Sending Mail Exception : {} [failure when sending the message]", ex.getCause());
return false;
} catch (Exception ex) {
LOGGER.error("Sending Mail Exception : {} [unknown Exception]", ex.getCause());
return false;
}
return true;
}
5. TIP
- 여러명 보낼때 배열처리관련
//예시
List<?> receiverList = dao.selectReceiverList();
String[] receiver = null;
if(receiverList.size() > 0) {
receiver = new String[receiverList.size()];
for(int i=0; i<receiverList.size(); i++) {
receiver[i] = receiverList.get(i).getEmailAddress().toString();
}
}
MailVO mailVO = new MailVO();
mailVO.setReceiverArr(receiver);
//VO파일
private String[] receiverArr;
반응형
'개발 > spring' 카테고리의 다른 글
[Spring] mybatis foreach 사용예제 (java코드포함) (0) | 2023.04.14 |
---|