[Tistory] 이메일 인증 보내기 테스트 샘플링

yuzu sim's avatar
Sep 21, 2024
[Tistory] 이메일 인증 보내기 테스트 샘플링
notion image

Could not autowire. No beans of 'JavaMailSender' type found

💡
yml에 문제 없는 것 같은데...?
notion image
💡
dev에만 메일 설정해서 그렇다나봄. 쓰는데 지장은 없다. (활성화되면 JavaMailSender 빈이 정상적으로 생성됨)
 

💡
난 yml 설정 함

1. yml 설정

[application-dev.yml]

server: servlet: session: tracking-modes: cookie encoding: charset: utf-8 force: true port: 8080 spring: mail: host: smtp.gmail.com port: 587 username: compilemate@gmail.com password: your-app-password properties: mail: smtp: starttls: enable: true required: true auth: true

[application.properties]

spring.mail.host=smtp.gmail.com spring.mail.port=587 spring.mail.username=compilemate@gmail.com spring.mail.password=your-app-password spring.mail.properties.mail.smtp.starttls.enable=true spring.mail.properties.mail.smtp.starttls.required=true spring.mail.properties.mail.smtp.auth=true
 

2. EmailController

package com.example.emailtest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import lombok.RequiredArgsConstructor; @RequiredArgsConstructor @RestController public class EmailController { private final EmailUtil emailUtil; @GetMapping("/sendmail") public String sendMail() { emailUtil.sendEmail("compilemate@gmail.com", "[Tistory 인증메일]", "되는지 테스트 하는 거예요"); return "메일 잘 보내졌어"; } }
 

3. EmailUtil

💡
JavaMailSender를 이용하여 메일을 보낼 수 있다. MimeMessage는 글자외에 그림과 파일을 보낼 수 있다.
package com.example.emailtest; import javax.mail.MessagingException; import javax.mail.internet.MimeMessage; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.MimeMessageHelper; import org.springframework.stereotype.Component; import lombok.RequiredArgsConstructor; @RequiredArgsConstructor @Component public class EmailUtil { private final JavaMailSender sender; // 메일 전송하는 메소드 public void sendEmail(String toAddress, String subject, String body) { MimeMessage message = sender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message); String htmlContent = getCertificationMessage(body); try { // 어디로 메일 보낼거냐 helper.setTo(toAddress); // 제목이 무엇이냐 helper.setSubject(subject); // true로 하면 html 디자인 되어있는 콘텐트를 넣어준다 helper.setText(htmlContent, true); } catch (MessagingException e) { e.printStackTrace(); } // 내가 설정한 이메일로 날아감 sender.send(message); } //html 꾸미기 private String getCertificationMessage(String body) { String certificationMessage = ""; certificationMessage += "<h1 style='text-align: center;'>[Tistory 인증메일]</h1>"; certificationMessage += "<h3 style='text-align: center;'>" + "인증코드 : <strong style='font-size: 32px; letter-spacing: 8px;'>" + body + "</strong></h3>"; return certificationMessage; } }
 

HTML 꾸며서 받기

private String getCertificationMessage(String certificationNumber) { String certificationMessage = ""; certificationMessage += "<h1 style='text-align: center;'>[Tistory 인증메일]</h1>"; certificationMessage += "<h3 style='text-align: center;'>" + "인증코드 : <strong style='font-size: 32px; letter-spacing: 8px;'>" + certificationNumber + "</strong></h3>"; return certificationMessage; }
💡
true라고 넣으면 html을 적용 할 수 있다.
notion image
 

4. http://localhost:8080/sendmail 주소로 요청

notion image

5. 결과

notion image
 
notion image
💡
html도 적용 됨!!
 
Share article

Coding_study