getOriginalMessage()); $token = $message->getHeaders()->get('gmailtoken')->getValue(); $message->getHeaders()->remove('gmailtoken'); $client = new Client(); $client->setClientId(config('ninja.auth.google.client_id')); $client->setClientSecret(config('ninja.auth.google.client_secret')); $client->setAccessToken($token); $service = new Gmail($client); $body = new Message(); $bccs = $message->getHeaders()->get('Bcc'); $bcc_list = ''; if ($bccs) { $bcc_list = 'Bcc: '; foreach ($bccs->getAddresses() as $address) { $bcc_list .= $address->getAddress() .','; } $bcc_list = rtrim($bcc_list, ",") . "\r\n"; } $body->setRaw($this->base64_encode($bcc_list.$message->toString())); try { $service->users_messages->send('me', $body, []); } catch(\Google\Service\Exception $e) { /* Need to slow down */ if ($e->getCode() == '429') { nlog("429 google - retrying "); $service->users_messages->send('me', $body, []); } } } private function base64_encode($data) { return rtrim(strtr(base64_encode($data), ['+' => '-', '/' => '_']), '='); } public function __toString(): string { return 'gmail'; } }