Spring/Spring framework

Email 보내기 2탄

원2 2022. 3. 18. 15:45
728x90
반응형

옛날에 한번 jsp 로 이메일 보내기 글을 쓴적있다.

 

근데 그냥 2탄으로 한번 써본다. 재공부~

 

지금 만드는 이메일 전송법을 대충 설명하자면,

 

로그인시 해당 유저의 존재여부를 확인하고 있다면

인증코드를 발송하기 위함.

 

여튼 중요한것은 Email 보내는 거니까 거기에만 집중해보자.

 


 

일단 pom.xml 에 Email 을 보내기위한 dependency 를 추가해주자!

 

아 참고로 메이븐임..

        <!-- https://mvnrepository.com/artifact/javax.mail/javax.mail-api -->
        <dependency>
            <groupId>com.sun.mail</groupId>
            <artifactId>javax.mail</artifactId>
            <version>1.6.1</version>
        </dependency>

 

추가해주고 인텔리제이 기준 우측 상단에 메이븐 업데이트 버튼이 생성되는데 업데이트를 해주자


다음으로 root-context.xml 로 가서 Email 을 보내기 위한 bean 설정을 해주자.

 

	<!-- mailSender -->
	<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="본인 비밀번호 입력" />
		<property name="javaMailProperties">
			<props>
				<prop key="mail.transport.protocol">smtp</prop>
				<prop key="mail.smtp.auth">true</prop>
				<prop key="mail.smtp.starttls.enable">true</prop>
				<prop key="mail.debug">true</prop>
			</props>
		</property>
	</bean>

 

본인의 이메일과 비밀번호를 입력하고 중요한 점!

gmail의 경우 해당 계정 설정 - 보안이 낮은 앱 허용여부 > 허용을 해야한다.

2022-05부터 막힌다고 하는데 그땐 다른방법을 찾아보겠음.

 


다음 메일을 보내기 위한 파일로 이동후 ex) controller or service

 

그곳에 해당 bean 을 주입시켜주자

 

 

@AutoWired 는 주입이다.

@Qualifier 을 사용한 이유는 동일한 타입을 가진 baen 이 존재한다면 exception을 발생시킬 수 있기 때문에

정확하게 표현해두기 위해 사용.

괄호 안의 내용은 해당 빈의 ID 값.

 


자 다음으론 이제 메일을 발송 시켜보자.

 


			MimeMessage mimeMessage = mailSender.createMimeMessage();
            MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, "UTF-8");
            messageHelper.setTo("보낼 이메일 주소");
            messageHelper.setFrom(new InternetAddress(((JavaMailSenderImpl) mailSender).getUsername(), "보내는 사람 명", "UTF-8"));
            messageHelper.setSubject("보낼 제목");
            messageHelper.setText("보낼 메세지", true);

            mailSender.send(mimeMessage);

 

이렇게 하고 툴이 시키는대로 try catch 문을 사용해서 씌워주면 된다. Exception 을 알아서 잡아줌

 

인코딩 UTF-8 빼고 해당 "" 자리엔 당연히 변수를 넣을 수 있으니 각자 원하는 방식대로 넣자.

참고로 .setText에 뒤에 있는 ture는 해당 String 을 Html 화 시킬거냐 아니냐를 선택하는 곳이니 html 으로 원한다면 ture, 아니라면 false를 하자.

 

만약 resources 파일의 내용을 가져와서 보내고 싶다면 해당파일을 불러, while 문을 돌리면서 StringBuffer 에 저장해서 출력해주면 된다. > 이건 나중에 업데이트하겠음

 

그럼 2만~

 

728x90
반응형

'Spring > Spring framework' 카테고리의 다른 글

스프링 빈 자바코드로 직접 설정  (0) 2022.12.21
Spring message arguments  (0) 2022.03.30
Spring message properties  (0) 2022.01.07
Spring MVC Request life cycle  (0) 2021.12.24
인터셉터  (0) 2021.08.19
boot06 부트스트랩 이용한 게시판 만들기  (0) 2021.08.11