환경(로컬)

Windows 10

java 13.0.2
tomcat8.5

환경(서버)

Linode cloud에서 Centos7 서비스

java 15.0.1
tomcat9.0.39

 

상황

Spring Framework에서 Gmail 메일서버를 통해 메일 발송하기

기본적으로 필요한것

Google ID(gmail사용)

 

Gmail의 보안이 낮은 수준 앱을 사용할 수 있도록 허용

https://www.google.com/settings/security/lesssecureapps

 

로그인 - Google 계정

하나의 계정으로 모든 Google 서비스를 Google 계정으로 로그인

accounts.google.com

Google 계정에 대한 액세스 허용

(에러는 나지 않는데 발송이 되지 않는 경우 접속해서 계속 버튼을 누르고 허용)

accounts.google.com/DisplayUnlockCaptcha

 

로그인 - Google 계정

하나의 계정으로 모든 Google 서비스를 Google 계정으로 로그인

accounts.google.com

진행

<dependency>
	<groupId>javax.mail</groupId>
		<artifactId>mail</artifactId>
	<version>1.4.7</version>
</dependency>

프로젝트 pom.xml에 mail.jar를 추가 

Maven Dependencies에서 하단에 mail-1.4.7.jar를 확인

 

root-context.xml 에 gmail설정을 추가

<!-- gmail설정 -->
	<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"> 
     	<property name="host" value="smtp.gmail.com" />
  		<property name="port" value="587" />
 		<property name="username" value="자신의 이메일 아이디"/> <!-- 자신의 이메일 아이디 -->
	 	<property name="password" value="자신의 비밀번"/> <!-- 자신의 비밀번호 -->
	 <!-- 보안연결 TLS과 관련된 설정 -->
	     <property name="javaMailProperties">
		    <props>
		       <prop key="mail.smtp.starttls.enable">true</prop>
		       <prop key="mail.smtp.auth">true</prop>
		       <prop key="mail.transport.protocol">smtp</prop>
		       <prop key="mail.debug">true</prop>
		    </props>
	     </property>
	</bean>

이제 jsp에서 요청하고

jsp 요청하는 div

Controller에서 처리하자

	@Autowired
	private JavaMailSender mailSender;
    
	//mailSend 코드
	@RequestMapping(value = "/mail/mailSend", method = RequestMethod.POST)
	public String mailSend(HttpServletRequest request,String name,String last_name,String email,String phone,String message) {
		try {
			MimeMessage mimeMessage = mailSender.createMimeMessage();
		    MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true, "UTF-8");

		    messageHelper.setFrom("fuzo070130@gmail.com"); // 보내는사람 이메일 여기선 google 메일서버 사용하는 아이디를 작성하면됨
		    messageHelper.setTo("nect2r@kakao.com"); // 받는사람 이메일
		    messageHelper.setSubject("[포트폴리오] 안녕하세요 저는" + name + last_name + "입니다."); // 메일제목
		    messageHelper.setText(message + " 연락처는 " + phone + "입니다. Email은 " + email + "입니다."); // 메일 내용

		    mailSender.send(mimeMessage);
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		return "redirect:/";
	}

 

작동을 확인해보자

 

포트폴리오 jsp

안에 내용을 채우고 SEND를 누르면

 

 

이메일 결과

정상적으로 받아진다.

 

 

이제 나는 war를 Linode에 배포하고 확인해보면 될 거 같다.