API-интерфейс Gmail PHP Отправка электронной почты

Я пытаюсь отправить электронное письмо через API-интерфейс Gmail ( https://developers.google.com/gmail/api/v1/reference/users/messages/send ). Кажется, что все работает до такой степени, что я отправляю сообщение. Мой код:

private function createMessage($email) { $message = new Google_Service_Gmail_Message(); $message->setRaw(strtr(base64_encode($email), '+/=', '-_,')); // $email is a raw email data string return $message; } public function sendMessage($userID, $email) { try { $msg = $this->createMessage($email); $this->service->users_messages->send($userID, $msg); } catch (Exception $e) { print 'An error occurred: ' . $e->getMessage(); } } 

Код разбивается на строку:

$this->service->users_messages->send($userID, $msg);

с ошибкой:

 An error occurred: Error calling POST https://www.googleapis.com/gmail/v1/users/myemailaddress@gmail.com/messages/send: (400) Invalid value for ByteString: 

Любая идея, что здесь происходит? Благодаря!

Строка электронной почты, на которую вы устанавливаете значение «raw», должна быть закодирована в кодировке url base64 (немного другой алфавит).

Проблема, как сказал Эрик, – это безопасная база URL 64. Вам нужно изменить преобразование URL-адреса на нечто более похожее на это:

 $message_object = new Google_Service_Gmail_Message(); $encoded_message = rtrim(strtr(base64_encode("PUT MESSAGE HERE"), '+/', '-_'), '='); $message_object->setRaw($encoded_message); 

Также не забудьте использовать действительный почтовый мим , поэтому «PUT MESSAGE ЗДЕСЬ» не будет работать в реальности. Вам нужно будет включить допустимые заголовки, например, тему и т. Д. Для их создания есть несколько различных библиотек PHP , или если вы можете сделать это самостоятельно в виде обычного текста.