$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; } } }