diff --git a/common/framework/drivers/mail/navercloudmail.php b/common/framework/drivers/mail/navercloudmail.php new file mode 100644 index 000000000..ff056b53d --- /dev/null +++ b/common/framework/drivers/mail/navercloudmail.php @@ -0,0 +1,181 @@ + $message->getSubject(), + 'body' => $message->getBody(), + 'senderAddress' => '', + 'senderName' => '', + 'recipients' => array(), + ); + + // Fill the sender info. + $from = $message->message->getFrom(); + foreach($from as $email => $name) + { + $data['senderAddress'] = $email; + $data['senderName'] = trim($name) ?: substr($email, 0, strpos($email, '@')); + break; + } + + // Fill the recipient info. + if ($to = $message->message->getTo()) + { + foreach($to as $email => $name) + { + $receiver = array(); + $receiver['address'] = $email; + $receiver['name'] = str_replace(',', '', trim($name) ?: substr($email, 0, strpos($email, '@'))); + $receiver['type'] = "R"; + + $data['recipients'][] = $receiver; + } + } + if ($cc = $message->message->getCc()) + { + foreach($cc as $email => $name) + { + $receiver = array(); + $receiver['address'] = $email; + $receiver['name'] = str_replace(',', '', trim($name) ?: substr($email, 0, strpos($email, '@'))); + $receiver['type'] = "C"; + + $data['recipients'][] = $receiver; + } + } + if ($bcc = $message->message->getBcc()) + { + foreach($bcc as $email => $name) + { + $receiver = array(); + $receiver['address'] = $email; + $receiver['name'] = str_replace(',', '', trim($name) ?: substr($email, 0, strpos($email, '@'))); + $receiver['type'] = "B"; + + $data['recipients'][] = $receiver; + } + } + + $timestamp = floor(microtime(true) * 1000); + + // Define connection options. + $headers = array( + 'Content-Type' => 'application/json', + 'x-ncp-apigw-timestamp' => $timestamp, + 'x-ncp-iam-access-key' => $this->_config['api_key'], + 'x-ncp-apigw-signature-v2' => $this::_makeSignature($timestamp, $this->_config['api_key'], $this->_config['api_secret']), + ); + + // Send the API request. + try + { + $request = \Rhymix\Framework\HTTP::post(self::$_url . "/mails", $data, $headers, [], ['timeout' => self::$_timeout]); + $result = @json_decode($request->getBody()->getContents()); + } + catch (\Requests_Exception $e) + { + $message->errors[] = 'Navercloudmail: Request error: ' . $e->getMessage(); + return false; + } + + if (isset($result->error)) + { + $message->errors[] = 'Navercloudmail: ' . $result->error . PHP_EOL . $result->details; + return false; + } + else + { + return true; + } + } +}