본문 바로가기
복붙 노트

wp_mail 함수를 활용한 Cloud Outbound Mailer 적용 방법

by 태천인(이영훈) 2022. 7. 15.
728x90

제가 카페 24를 주로 사용하다 보니 이메일 발송 관련해서 매우 불편한 접이 있습니다.
이메일 때문에 큰 서버를 사용하기 싫고 

그러자니 영어가 약한 분들은 아마존 SES 사용하면서 설정 방법 불편하더라고요.
우연치 안게 다른 업체에서 N클라우드 이용하는 거 보고 저도 공부 겸해서 가장 많이 사용하는 워드프레스 적용방법 문서화하였습니다.

function sdt_mail($to, $title, $body)
{

  $admin_email = get_option('admin_email');

  $space = " ";
  $newLine = "\n";
  $method = "POST";
  $uri = "/api/v1/mails";
  $timestamp = time();
  list($microtime, $timestamp) = explode(' ', microtime());
  $timestamp = $timestamp . substr($microtime, 2, 3);

  $accessKey = "";
  $secretKey = "";

  $hmac = $method . $space . $uri . $newLine . $timestamp . $newLine . $accessKey;
  $signautue = base64_encode(hash_hmac('sha256', $hmac, $secretKey, true));

  $url = "https://mail.apigw.ntruss.com/api/v1/mails";
  $headers = array("Content-Type" => "application/json", "x-ncp-apigw-timestamp" => $timestamp, "x-ncp-iam-access-key" => $accessKey, "x-ncp-apigw-signature-v2" => $signautue);

  $data = array();
  $data["senderAddress"] = $admin_email;
  $data["title"] = $title;
  $data["body"] = nl2br($body);
  $data["recipients"][0]["address"] = $to;
  $data["recipients"][0]["type"] = "R";

  $out = wp_remote_retrieve_body(wp_remote_post($url, array('headers' => $headers, 'body' => json_encode($data))));
  return $out;

}

add_filter('wp_mail', 'my_wp_mail_filter');
function my_wp_mail_filter($args)
{
    sdt_mail($args['to'], $args['subject'], $args['message']);
    $args['to'] = '';
    $args['subject'] = '';
    $args['message'] = '';
    return $args;
}

다음에는 N클라우드 Cloud Outbound Mailer 방법을 알려드리겠습니다. 

728x90

댓글0