From 0d6cc06ceedca5d4b05fd00832a2b3302e5a8ee6 Mon Sep 17 00:00:00 2001 From: Lastorder <18280396+Lastorder-DC@users.noreply.github.com> Date: Mon, 15 Jul 2024 09:19:54 +0000 Subject: [PATCH] WIP navercloudmail --- .../framework/drivers/mail/navercloudmail.php | 202 ++++++++++++++++++ 1 file changed, 202 insertions(+) create mode 100644 common/framework/drivers/mail/navercloudmail.php diff --git a/common/framework/drivers/mail/navercloudmail.php b/common/framework/drivers/mail/navercloudmail.php new file mode 100644 index 000000000..c3b725a9b --- /dev/null +++ b/common/framework/drivers/mail/navercloudmail.php @@ -0,0 +1,202 @@ + $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 = $request->getBody()->getContents(); + } + catch (\Requests_Exception $e) + { + $message->errors[] = 'Navercloudmail: ' . $e->getMessage(); + return false; + } + + // TODO: proper parsing of body + debugPrint($result); + return true; + /* + if (!$result) + { + $message->errors[] = 'Navercloudmail: Server error: ' . $request->body; + return false; + } + elseif($result->result === 'OK') + { + return true; + } + else + { + if(isset($result->error_msg)) + { + if(isset(self::$_error_codes[$result->error_msg])) + { + $result->error_msg .= ' ' . self::$_error_codes[$result->error_msg]; + } + $message->errors[] = 'Woorimail: ' . $result->error_msg; + } + else + { + $message->errors[] = 'Woorimail: Connection error'; + } + return false; + } + */ + } +}