daum์ SMTP๋ฅผ ์ด์ฉํด์ ๋ฉ์ผ ๋ฐ์กํ๋ ์์
๊ฐ๋ฐํ๊ฒฝ: springBoot 2.7.14, gradle
์ ํ์กฐ๊ฑด(daum smtp ํ์ฑํ)
์ค์ > IAMP/POP3(์ ๊ธฐ์ ์ ๋ณด๋ฅผ ํ๋กํผํฐ์ ๊ธฐ์ )
์์กด์ฑ ์ถ๊ฐ(gradle)
implementation 'org.springframework.boot:spring-boot-starter-mail'
application.yml์ smtp ์ค์ ์ถ๊ฐ
spring:
mail:
host: smtp.daum.net
port: 465
username: #์ก์ ๋ฉ์ผ์ฃผ์(๋ณด๋ด๋ ๋ฉ์ผ ์ฃผ์)
password: #์ก์ ๋ฉ์ผ ์ฃผ์์ ๋น๋ฐ๋ฒํธ(์ฌ๊ธฐ์ 2์ฐจ ์ธ์ฆ ์ฑ ๋น๋ฐ๋ฒํธ ์
๋ ฅํจ)
properties: #tls ์ค์
mail:
smtp:
auth: true
ssl:
enable: true
Vo
package com.example.testproject1.mail.model;
import lombok.Data;
@Data
public class MailVo {
private String from;
private String to;
private String subject;
private String content;
}
Service
package com.example.testproject1.mail.service;
import com.example.testproject1.mail.model.MailVo;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
@Service
@Slf4j
@RequiredArgsConstructor
@Transactional(readOnly = true)
public class MailService {
private final JavaMailSender mailSender;
/**
* ๋ฉ์ผ ๋ฐ์ก
* @param mailVo
* @throws MessagingException
*/
public void sendMail(MailVo mailVo) throws MessagingException {
//๋จ์ํ ํ
์คํธ ๊ธฐ๋ฐ์ ์ด๋ฉ์ผ ๋ฉ์์ง๋ฅผ ์์ฑํ๋ ๋ฐ ์ฌ์ฉ
//SimpleMailMessage message = new SimpleMailMessage();
//Mime(Multi-purpose Internet Mail Extensions) ํ์์ ์ด๋ฉ์ผ์ ์์ฑํ๊ณ ์กฐ์ํ๋ ๋ฐ ์ฌ์ฉ
//ํ
์คํธ, HTML, ์ฒจ๋ถ ํ์ผ ๋ฐ ๋ค์ํ ๋ฉํฐ๋ฏธ๋์ด ๋ฐ์ดํฐ๋ฅผ ํฌํจํ ์ ์๋ ๋ ๋ค์ํ ํ์์ ์ด๋ฉ์ผ์ ์ง์
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setFrom(mailVo.getFrom());
helper.setTo(mailVo.getTo());
helper.setSubject(mailVo.getSubject());
helper.setText(mailVo.getContent(), true);
//์ฒจ๋ถํ์ผ ์ถ๊ฐ ์ ์๋ ์์์ฒ๋ผ ํ์ผ๋ช
, ํ์ผ๊ฐ์ฒด ์ถ๊ฐ
helper.addAttachment(file.getOriginalFilename(), file);
mailSender.send(message);
}
}
RestController
์๋๋ POST๋ก ๋ณด๋ด์ผ ํ์ง๋ง ์์ ๋๊น GET์ผ๋ก ํธ์ถํจ
package com.example.testproject1.mail.web;
import com.example.testproject1.mail.model.MailVo;
import com.example.testproject1.mail.service.MailService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.mail.MessagingException;
import java.util.HashMap;
import java.util.Map;
@RestController
@RequiredArgsConstructor
@Slf4j
@RequestMapping("/api/mail")
public class MailRestController {
private final MailService mailService;
@GetMapping("/send")
public ResponseEntity<Map<String, Object>> sendMail() throws MessagingException {
Map<String, Object> resultMap = new HashMap<>();
MailVo mailVo = new MailVo();
mailVo.setFrom("์ก์ ๋ฉ์ผ์ฃผ์");
mailVo.setTo("์์ ๋ฉ์ผ ์ฃผ์");
mailVo.setSubject("springBoot๋ก daum์ SMTP๋ก ๋ณด๋ด๋ ์ด๋ฉ์ผ ํ
์คํธ");
mailVo.setContent("์๋
ํ์ธ์. ์ด ๋ฉ์ผ์ springBoot๋ก daum SMTP ์ด์ฉํด์ ๋ณด๋ด๋ ๋ฉ์ผ์
๋๋ค.");
mailService.sendMail(mailVo);
resultMap.put("code", "success");
return new ResponseEntity<>(resultMap, HttpStatus.OK);
}
}
ํ ์คํธ
๊ฐ์ธ ์คํฐ๋ ๊ธฐ๋ก์ ๋ฉ๋ชจํ๋ ๊ณต๊ฐ์ด๋ผ ํ๋ฆฐ์ ์ด ์์ ์ ์์ต๋๋ค.
ํ๋ฆฐ ์ ์์ ๊ฒฝ์ฐ ๋๊ธ ๋ถํ๋๋ฆฝ๋๋ค.
'IT > development' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[springBoot] ์์ ํ์ผ ์ฝ๊ธฐ(feat. ajax) (62) | 2023.08.23 |
---|---|
[Java] ๊ฐ๋ณ์ธ์ ์ฌ์ฉ(feat. String ... str) (37) | 2023.08.22 |
[github] github ์น vs code ์ฌ์ฉ (0) | 2023.08.17 |
[Vue.js] Vue.js ์ฒจ๋ถํ์ผ ์ ๋ก๋ (0) | 2023.08.13 |
[JavaScript] ํ ํ๋ฆฟ ๋ฌธ์์ด ์ฌ์ฉ๋ฒ(feat. '(๋ฐฑํฑ)) (2) | 2023.08.13 |
๋๊ธ