Gmail API отправляет электронную почту с другими учетными данными - PullRequest
0 голосов
/ 07 мая 2020

$client->setAccessToken($accessToken);
$service = new Google_Service_Gmail($client);
$email = createMessage("test email");
sendMessage($service,"me",$email);


function createMessage($email) {

  $to ="email@addrress.com";
  $strSubject = 'TEST THREAD123125';
  $strRawMessage = "From: apitest@gmail.com\r\n";
  $strRawMessage .= "To: ".$to." \r\n";
  $strRawMessage .= "Cc:" .  $to  . "\r\n";
  $strRawMessage .= 'Subject: =?utf-8?B?' . base64_encode($strSubject) . "?=\r\n";
  $strRawMessage .= "MIME-Version: 1.0\r\n";
  $strRawMessage .= "Content-Type: text/html; charset=utf-8\r\n";
  $strRawMessage .= 'Content-Transfer-Encoding: quoted-printable' . "\r\n\r\n";
  $strRawMessage .= "this <b>is a test message!\r\n";
  $mime = rtrim(strtr(base64_encode($strRawMessage), '+/', '-_'), '=');
  $message = new \Google_Service_Gmail_Message();
  $message->setRaw($mime);
  return $message;
}


function sendMessage($service, $userId, $message) {
  try {
    $message = $service->users_messages->send($userId, $message);
    print 'Message with ID: ' . $message->getId() . ' sent.';
    return $message;
  } catch (Exception $e) {
    print 'An error occurred: ' . $e->getMessage();
  }
}

Я пытаюсь использовать эту функцию на основе документации по https://developers.google.com/gmail/api/v1/reference/users/messages/send

Поскольку я использовал аутентификацию gmail, значение по умолчанию для $ userid равно «мне». Есть ли возможность изменить значение «я» на другой адрес электронной почты (адрес электронной почты, который я использовал для учетных данных. json).

1 Ответ

0 голосов
/ 19 мая 2020

Сообщение об ошибке delegation denied, которое вы получаете, связано с тем, что другой адрес электронной почты, который вы используете для запроса, не является авторизованным в этой ситуации.

Когда вы получили access token , вы получили его за main@gmail.com, но это не дает доступа к другому указанному адресу электронной почты apitest@gmail.com.

Согласно документации Обработка запросов авторизации :

Когда пользователь загружает ваше приложение в первый раз, ему предоставляется диалоговое окно, в котором разрешается вашему приложению доступ к его учетной записи Gmail с запрошенными областями разрешений. После этой первоначальной авторизации пользователю предоставляется диалоговое окно разрешений только в том случае, если изменился идентификатор клиента вашего приложения или изменились запрашиваемые области.

Ссылка

...