더 나은 개발자가 되고싶다..

[Java] Naver Cloud Platform _ Cloud Outbound Mailer 사용하기 본문

코딩/Java

[Java] Naver Cloud Platform _ Cloud Outbound Mailer 사용하기

오맹이 2020. 12. 10. 09:18

이번에는 네이버 Cloud Outbound Mailer를 자바로 개발 해보겠다.

 

구글링을 해보면 

네이버에서 제공하는 gitHub에 파이썬을 사용한 버전

https://github.com/NaverCloudPlatform/outbound_mailer_python_sample

 

 

Songsari님의 PHP 버전을 볼 수 있었다.

https://yoshikixdrum.tistory.com/195

 

하지만 나는 자바 버전이 필요했고 Cloud Platform 도큐먼트를 뒤져보다가 JDK버전을 쉽게 구할 수 있었다.

https://docs.ncloud.com/ko/email/email-1-3.html

 

간단하게 메일을 보내는 코드를 첨부하자면

public class V1ApiExample2 {
	public static void main(String[] args) throws IOException {
		ApiClient apiClient = new ApiClient.ApiClientBuilder()
			.addMarshaller(JsonMarshaller.getInstance())
			.addMarshaller(XmlMarshaller.getInstance())
			.addMarshaller(FormMarshaller.getInstance())
			.setCredentials(new PropertiesFileCredentialsProvider("lib/credentials.properties").getCredentials())
			.setLogging(true)
			.build();
		
		V1Api apiInstance = new V1Api(apiClient);

		List<EmailSendRequestRecipients> esrrList = new ArrayList<EmailSendRequestRecipients>();
		EmailSendRequestRecipients esrr = new EmailSendRequestRecipients();
		esrr.setAddress("수신자 이메일");
		esrr.setName("수신자 이름");
		esrr.setType("R");
		esrrList.add(esrr);
	
		EmailSendRequest requestBody = new EmailSendRequest();
		requestBody.setBody("본문");
		requestBody.setRecipients(esrrList);
		//requestBody.setTemplateSid({templateID}); 템플릿을 만들었다면 템플릿 번호
		requestBody.setSenderAddress("발송자 아이디");
		requestBody.setSenderName("발송자 이름");
		requestBody.setTitle("");
		requestBody.setConfirmAndSend(false);
		
		String X_NCP_LANG = "ko-KR"; // String | 언어 (ko-KR, en-US, zh-CN), default:en-US
		System.out.println(requestBody);
		try {
			// Handler Successful response
			ApiResponse<EmailSendResponse> result = apiInstance.mailsPost(requestBody, X_NCP_LANG);
		} catch (ApiException e) {
			// Handler Failed response
			int statusCode = e.getHttpStatusCode();
			Map<String, List<String>> responseHeaders = e.getHttpHeaders();
			InputStream byteStream = e.getByteStream();
			e.printStackTrace();
		} catch (SdkException e) {
			// Handle exceptions that occurred before communication with the server
			e.printStackTrace();
		}
		
		
	}
	
	
}

1. credentials.properties 파일은 다음과 같이 생성한후에 호출하면 된다, 

type=iam
apiKey={apiKey}
accessKey={accessKey}
secretKey={secretKey}

 

2. 자바프로젝트로 실행을 했을 경우 코드이다. 이를 실행하면 pom.xml이 없기때문에 하나하나 jar파일을 다운받아 넣어줘야하는데 나같은 경우에는 Maven Repository에서 jar파일을 다 다운 받았다.

받은 jar파일의 목록은 아래와 같다.

파일명 버전 url
commons-codec 1.11 https://mvnrepository.com/artifact/commons-codec/commons-codec
commmons-lang3 3.7 https://mvnrepository.com/artifact/org.apache.commons/commons-lang3
jackson-annotations 2.9.3 https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations
jackson-core 2.9.3 https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core
jackson-databind 2.9.3 https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind
jackson-dataformat-xml 2.9.3 https://mvnrepository.com/artifact/com.fasterxml.jackson.dataformat/jackson-dataformat-xml
json-simple 1.1.1 https://mvnrepository.com/artifact/com.googlecode.json-simple/json-simple
logging-interceptor 3.9.1 https://mvnrepository.com/artifact/com.squareup.okhttp3/logging-interceptor
okhttp 3.9.1 https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp
okio 2.2.2 https://mvnrepository.com/artifact/com.squareup.okio/okio
kotlin-runtime 1.1.1 https://mvnrepository.com/artifact/org.jetbrains.kotlin/kotlin-runtime

※nes-client-1.6.0.jar 파일이 반드시 필요한데 이는 네이버에서 제공하는 jdk에 들어있다.!!

 

이것들을 전부 넣어주고 실행하면 자바프로젝트에서 간단하게 메일 전송이 실행 가능하다.

 

'코딩 > Java' 카테고리의 다른 글

[java]Naver 문자 API SENS SMS 사용하기  (3) 2020.12.09
[Java Day01]변수와 타입  (0) 2020.05.26