자고 일어나자 마자 암호화/복호화 시스템 한번 보고 이메일 시스템 구축에 들어갔다.
암호화 자체는 잘 되지만, 어제랑 달리 암호가 어째서인지 바뀌진 않는다.
안 되는 건 아니지만, 뭔가 짜게 식은 느낌.
아무튼 메일 시스템 구축에 들어갔다.
https://kimvampa.tistory.com/93
[Spring]메일서버(SMTP Server)를 이용한 메일 전송 2
개인 공부 후 자료를 남기기 위한 목적이기에 내용 상에 오류가 있을 수 있습니다. 목표 1. 스프링에서 SMTP 서버를 이용한 메일 전송을 할 수 있습니다. 2. 1의 목표 기능을 구현하기 위해 구글, 네
kimvampa.tistory.com
033: Spring Boot 애플리케이션에서 이메일 전송 구현
wiki.yowu.dev
https://velog.io/@gale4739/Spring-Boot-%EB%A9%94%EC%9D%BC-%EB%B0%9C%EC%86%A1
Spring Boot 메일 발송
안녕하세요 오늘은 Spring Boot에서 메일을 발송하는 방법에 대해서 포스팅하도록 하겠습니다. 현재 투다에는 메일로 비밀번호 찾기 기능을 제공하고 있는데, 이 부분을 Spring Boot에서 어떤 식으로
velog.io
https://ajdahrdl.tistory.com/236
[Spring Boot] 이메일 전송하는 방법
안녕하세요. 이번 포스팅에서는 Spring Boot에서 간단한 이메일을 보내는 방법에 대해 공유해드리려고 합니다. 총 두 가지 챕터(이메일 계정 설정, Spring Boot 설정)이 있습니다. 1. Spring Boot에서 보내
ajdahrdl.tistory.com
참고 사이트들
스프링 때 메일 시스템에 더해 파일까지 업로드할 수 있는 시스템을 만들고자 했다.
일단 현재로서는 정해진 파일만 넣지만,
관리자 페이지 팀원이랑 상의해서 관리자가 파일을 넣을 수 있게 만들고 싶다.
<!-- 이메일 디펜던시 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
우선 디펜더시 입력
# Mail Setting
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
application.properties에도 입력
package com.moonBam.controller.member;
import javax.mail.internet.MimeMessage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.FileSystemResource;
import java.io.File; //강제 입력
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.mail.javamail.MimeMessagePreparator;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class Test {
@Autowired
private JavaMailSender javaMailSender;
private static final String FROM_EMAIL = "cjstkrhdfk666@gmail.com";
//단순 메일 전송
@RequestMapping("/test")
public String sendTestEmail() throws Exception {
String TO_EMAIL = "";
String EMAIL_SUBJECT = "메일 제목";
String EMAIL_BODY = "메일 내용";
sendEmail(FROM_EMAIL, TO_EMAIL, EMAIL_SUBJECT, EMAIL_BODY);
return "member/Login/loginMain";
}
//파일 첨부 메일 전송
@RequestMapping("/test2")
public String sendTestEmail2() throws Exception {
String TO_EMAIL = "";
String EMAIL_SUBJECT = "Email subject";
String EMAIL_BODY = "Email body";
sendEmailWithFiles(FROM_EMAIL, TO_EMAIL, EMAIL_SUBJECT, EMAIL_BODY);
return "member/Login/loginMain";
}
//이메일 전송 함수(수정 X)(람다식)
private void sendEmail(String from, String to, String subject, String body) throws Exception {
javaMailSender.send(
(MimeMessagePreparator) mimeMessage -> {
MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true); // true: 멀티파트 메세지를 사용
messageHelper.setFrom(from);
messageHelper.setTo(to);
messageHelper.setSubject(subject);
messageHelper.setText(body, true); // true: html을 사용
});
}
//이메일 전송 함수(수정 X)(일반식)
// private void sendEmail(String from, String to, String subject, String body) throws Exception {
// javaMailSender.send(new MimeMessagePreparator() {
//
// @Override
// public void prepare(MimeMessage mimeMessage) throws Exception {
// MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true); // true: 멀티파트 메세지를 사용
// messageHelper.setFrom(from);
// messageHelper.setTo(to);
// messageHelper.setSubject(subject);
// messageHelper.setText(body, true); // true: html을 사용
// }
// });
// }
//이메일과 파일 전송 함수(수정 X)(일반식)
private void sendEmailWithFiles(String from, String to, String subject, String body) throws Exception {
javaMailSender.send(new MimeMessagePreparator() {
@Override
public void prepare(MimeMessage mimeMessage) throws Exception {
MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true);
messageHelper.setFrom(from);
messageHelper.setTo(to);
messageHelper.setSubject(subject);
messageHelper.setText(body, true);
FileSystemResource file = new FileSystemResource(new File("c:\\a.png"));
messageHelper.addAttachment("c:\\a.png", file);
}
});
}
}
열받게 코드 붙여넣기만 하면 정렬이 박살이 난다.
그냥 이메일 전송에는 Vue 배우면서 알게 된 람다식,
파일 첨부 이메일 전송에는 기존 방식대로 코드를 작성했다.
코드의 기본 틀은 아래쪽으로 밀어넣고, 수정하는 부분만 위로 올렸다.
현재 내 실력으로 만들 수 있는 휠키를 덜 돌리는 코드다.
import java.io.File;는 왜 자동으로 안 돌아가는지 모르겠다.
파일 전송 함수에는 관리자가 넣고 싶은 파일을 넣되, 디폴트 파일을 설정해볼 예정이다.
다음에는 랜덤 6자리 정수를 인증코드로 보내고, 그걸 인증하는 시스템을 구현할 예정이다.
이걸 해야 가입이 되고, 가입이 되야 암호화/복호화가 원할하게 확인할 수 있다.
(이미 만든거 주석 처리하기에는 너무 많아서 어?쩔 수 없다.)
'팀프로젝트 > SpringBoot' 카테고리의 다른 글
스프링 부트 팀플)_20240311 (0) | 2024.03.11 |
---|---|
스프링 부트 팀플) 20240310_암호화/복호화 적용 (0) | 2024.03.10 |
스프링 부트 팀플) 20240310_이메일 인증 구현 (0) | 2024.03.10 |
스프링 부트 팀플) 20240309_암호화와 복호화 (0) | 2024.03.09 |
스프링 부트 팀플) 20240309_전환 시작 (0) | 2024.03.09 |