728x90
반응형

Apache Camel로 메일 보내는 라우터를 샘플로 만들어봤다.

 

메일을 보내기 위해선 먼저, pom.xml에 메일 보내는 dependency를 추가해야한다.

<!-- spring boot용 camel을 사용하기 위한 디펜던시-->
<dependency>
	<groupId>org.apache.camel.springboot</groupId>
	<artifactId>camel-spring-boot-starter</artifactId>
	<version>${camel.version}</version>
</dependency>

<!-- Mail 컴포넌트 -->
<dependency>
	<groupId>org.apache.camel.springboot</groupId>
	<artifactId>camel-mail-starter</artifactId>
	<version>${camel.version}</version>
	<!-- use the same version as your Camel core version -->
</dependency>

 

 

그리고 네이버 메일 설정에서 SMTP 옵션을 허용해야한다.

 

 

그리고 설정 밑에 아래와 같은 정보를 참고해서

환경설정에 등록할 아이디, 네이버 비번, SMTP 서버명, SMTP 포트, 보안 연결 SSL 필요 정보

 

application.properties에 정보를 입력해준다.

# 네이버 메일 설정에서 smtp 허용해야함.
spring.mail.host=smtp.naver.com
spring.mail.port=465
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true

# username은 네이버 로그인할때 아이디@naver.com / password는 네이버 로그인할때 패스워드이다.
spring.mail.username=test@naver.com
spring.mail.password=test

 

참고로 apache camel은 내부적으로 java mail sender를 사용한다. 그래서 설정값은 거의 java mail sender와 비슷하다.

오류가 나도 mail sender와 똑같은 오류가 난다.

 

그리고 Camel 라우터를 다음과 같이 만들어 주면 된다.

참고로 프로퍼티 내용은 {{프로퍼티 변수명}} 으로 가져올 수 있다.

여기서 주목해야할 점은 username을 abc@naver.com 이런식으로 이메일 주소를 써야한다는 것이다.

그냥 로그인 아이디만 적으면 RFC? 오류가 난다.

import org.apache.camel.LoggingLevel;
import org.apache.camel.builder.RouteBuilder;
import org.springframework.stereotype.Component;

@Component
public class MailRouter extends RouteBuilder {
	
	@Override
	public void configure() throws Exception {
		
		// 네이버에서 카카오로 보내는 테스트했음, 타이머는 30초로 설정함.
		from("timer:sql-router?period=30000") 
		.routeId("MailRouter")
		// 받는 사람
		.setHeader("from", simple("{{spring.mail.username}}"))
		.setHeader("to", simple("test@kakao.com"))
		.setHeader("subject", simple("NEW TEST MAIL"))
		.setBody(simple("안녕하세요 이건 바디, 메일내용입니다."))
	    
		// application.properties에서 값을 가져와서 세팅한다.
		.to("smtps://{{spring.mail.host}}:{{spring.mail.port}}?username={{spring.mail.username}}&password={{spring.mail.password}}&mail.smtp.auth={{spring.mail.properties.mail.smtp.auth}}&mail.smtp.starttls.enable={{spring.mail.properties.mail.smtp.starttls.enable}}")
		.log(LoggingLevel.INFO,"EMAIL NOTIFICATION SENT");
	}

}

 

네이버에서 카카오 메일로 성공적으로 보내졌다는 로그
메일보내기 성공

반응형

+ Recent posts