[PHP] 네이버 Cloud Outbound Mailer API 파일 첨부하기
- 공유 링크 만들기
- X
- 이메일
- 기타 앱
[PHP] 네이버 Cloud Outbound Mailer API 파일 첨부하기
지난 글에 이어 이번에는 createFile API를 이용해 메일 전송 시 파일 첨부를 위한 파일 업로드입니다. 파일 업로드 후 메일 전송 시 해당 파일 아이디를 이용해서 파일 첨부를 할 수 있습니다. 그리고 업로드된 파일은 24시간 동안 재사용할 수 있으며 24시간이 지나면 파일과 함께 파일 아이디도 삭제되게 됩니다. 메일 전송 시 파일 첨부가 없으면 이상하겠죠?
2019/12/05 - [평범한 개발 이야기/PHP] - [PHP] 네이버 Cloud Outbound Mailer API 파일 첨부하기
1. signature 만들기
지난 글과 동일하게 공통인증 헤더를 먼저 만들어야 합니다. 공통헤더를 만들기 전 sinature를 만들어야 하는데 딱 한 부분이 달라집니다. 바로 "/api/v1/files" 부분입니다. 사실 이 부분 때문에 시간을 상당히 날려먹었습니다. 설명이 제대로 되어있지 않아서죠. (물론 제가 이해력이 딸려서 그럴 수도 있습니다.)
"; $message .= $timestamp; $message .= "
"; $message .= $access_key; $signature = base64_encode(hash_hmac('sha256', $message, $secret_key, true));
위와 같이 signature를 만들어 줍니다.
2. 파일 BODY 만들기
저는 파일을 서버에 먼저 올리고 해당 파일을 createFile API를 통해 올리는 방법을 사용했습니다. 그 이유는 기존 만들어져 있던 시스템에서 해당 메일 부분만 바꾸는 작업이었기 때문에 최대한 기존과 동일하게 갈려고 했기 때문입니다. API 문서에서 제공해주는 예시입니다. 파일 업로드를 위해 해당 예시처럼 만들어 주어야 했습니다.
위 API의 요청 예시처럼 PHP로 만들었습니다.
"; $data .= 'Content-Disposition: form-data; name="fileList";' . ' filename="' . $file_name . '"' . "\r
"; $data .= 'Content-Type: ' . mime_content_type($fileName) . "\r
"; $data .= "\r
"; $data .= $fileData . "\r
"; $data .= "--" . $delimiter . "--\r
";
$delimiter 를 만들기 위해 uniqid() 함수를 사용했습니다. 해당 함수는 유니크 ID를 생성하는 기본 함수입니다.
`uniqid() - 유니크 ID를 생성하는 PHP 함수 기본은 16진수 13자리`
그리고 mime_content_type() 함수를 이용해 파일의 타입을 가져옵니다. 생성한 파일 정보를 이용해 공통 인증 헤더를 만들어줍니다.
기존에 없던 파일의 내용이 추가되었습니다.
이렇게 createFile API를 사용할 모든 정보가 제작되었습니다.
3. createFile API를 이용해 파일 업로드
위에 만들어진 내용을 토대로 지난번과 같이 curl를 이용해 createFile API를 호출하면 됩니다.
여기서 주의할 점은 Cloud Outbound Mailer의 createFile 응답에 헤더의 내용이 같이 딸려서 오기 때문에 바로 json_decode() 함수를 사용하면 원하는 값을 가져와서 사용할 수 없습니다. 따라서 헤더의 내용을 제거해주는 내용도 포함해서 처리를 해줍니다. API 문서의 내용처럼 JSON으로 응답을 가져와 json_decode()를 이용해 배열로 만들어 사용할 수 있습니다.
여기서 files에 있는 fileId를 이용해 메일 전송 시 사용을 하면 첨부파일이 들어간 메일을 전송할 수 있습니다.
from http://yoshikixdrum.tistory.com/196 by ccl(A) rewrite - 2020-03-06 23:20:22
- 공유 링크 만들기
- X
- 이메일
- 기타 앱
댓글
댓글 쓰기