Код адреса получателя ": 400 при отправке электронной почты с использованием Gmail API в Laravel PHP - PullRequest
0 голосов
/ 26 марта 2020

Я пытаюсь отправить электронное письмо через систему через интеграцию API Gmail, но получаю сообщение об ошибке:

Google_Service_Exception {"error": {"errors": [{"domain" : "global", "reason": "invalidArgument", "message": "Требуется адрес получателя"}], "code": 400, "message": "Требуется адрес получателя"}}

Вот код в Laravel:

$obj = new \Google_Service_Gmail_Message ();
$raw = "MIME-Version: 1.0\n\r
From: Muhammad Bilal <muhammad.bilal@dynamologic.com>\n\r
To: Umer Sheikh <umer.sheikh@dynamologic.com>\n\r
Subject: SIMPLE TEXT EMAIL\n\r
Date: Thu, 5 Mar 2020 18:45:33 +0500\n\r
Message-ID: <1234@local.machine.example>\n\r
Content-Type: text/plain; charset=\"UTF-8\"\n\r
\n\r
NO BODY";
$raw = rtrim(strtr(base64_encode($raw), '+/', '-_'), '=');
$obj->setRaw($raw);
$obj->setId('1234');
$obj->setInternalDate(null);
$obj->setLabelIds(null);

$payload = new \Google_Service_Gmail_MessagePart ();
$body = new \Google_Service_Gmail_MessagePartBody ();
$body->setData('test');
$body->setSize('1');

    $payload->setBody($body);
    $obj->setPayload($payload);
    $results = $service->users_messages->send($user, $obj);

Ответы [ 2 ]

1 голос
/ 30 марта 2020

Проблема решена, найден пример кода, который работал

    $user = 'me';
    $strSubject = 'Test mail using GMail API' . date('M d, Y h:i:s A');
    $strRawMessage = "From: Muhammad Bilal <muhammad.bilal@dynamologic.com>\r\n";
    $strRawMessage .= "To: Muhammad Bilal <mb3451@yahoo.com>\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), '+/', '-_'), '=');
    $msg = new \Google_Service_Gmail_Message();
    $msg->setRaw($mime);
    $service->users_messages->send("me", $msg);
0 голосов
/ 26 марта 2020

Полученное сообщение об ошибке связано с тем, что Content-Type должен иметь тип message/rfc822 и , а не text/plain:

Как указано в Users.messages: send документация :

Этот метод поддерживает URI / upload и принимает загруженный носитель со следующими характеристиками:

  • Максимум размер файла: 35 МБ

  • Допустимые типы MIME мультимедиа: message/rfc822

Поэтому все сообщение электронной почты должно быть в формате RF C 2822 в формате base64url .

ссылка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...