@RestController
@RequiredArgsConstructor
public class EmailController {
private final JavaMailSender mailSender;
@GetMapping("/send-email")
public String sendEmail() {
SimpleMailMessage message = new SimpleMailMessage();
message.setTo("[email protected]");
message.setSubject("이것은 메일입니다");
message.setText("이것은 내용입니다");
mailSender.send(message);
return "메일 발송 완료!";
}
}
스프링부트에서 JavaMailSender를 사용해서 이메일을 보내려고 하고 있었는데 아래와 같이 500 Internal Server Error가 발생하고 있더라
HTTP/1.1 500
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sat, 23 Mar 2024 14:11:40 GMT
Connection: close
{
"timestamp": "2024-03-23T14:11:40.012+00:00",
"status": 500,
"error": "Internal Server Error",
"path": "/send-email"
}
원인을 확인해보니 application.properties쪽에 설정한 spring.mail.password 부분이 문제인데, 단순 이메일 비밀번호를 입력할 것이 아니라, 앱 비밀번호를 사용해줘야 하는데
구글로 들어온 뒤 우측 상단의 계정 클릭하고 다음은 Google 계정 관리를 눌러주자
이후 앱 비밀번호를 검색해서 들어간 뒤
앱 비밀번호를 생성해주고, 이후 생성된 비밀번호를 spring.mail.password에 넣어준 뒤 사용하면 이메일이 잘 발송된다.
Leave a Reply