Как отправлять большие вложения с помощью gmail API - PullRequest
0 голосов
/ 11 июня 2018

Я пытаюсь отправить электронное письмо с помощью Gmail API.Я могу отправить его с меньшими файлами успешно.Проблема появляется, когда я пытаюсь отправить вложение большего размера.Уже пару часов я пробую разные решения.До этого выдавалась ошибка Ошибка 413: слишком большой объект запроса .Я обновил свой код, и он выглядит так:

    $mime = rtrim(strtr(base64_encode($mime), '+/', '-_'), '=');
$msg = new Google_Service_Gmail_Message();
$msg->setRaw($mime);
$sendOptions = [
        'uploadType' => 'resumable'
];
// size of chunks we are going to send to google
$chunkSizeBytes = 1 * 1024 * 1024;

$client->setDefer(true);
$objSentMsg = $service->users_messages->send('me', $msg, $sendOptions);

// create mediafile upload
$media = new Google_Http_MediaFileUpload(
    $client,
    $objSentMsg,
    'message/rfc822',
    $mime,
    true,
    $chunkSizeBytes
);
//I tried to pass null in above media object in place of $mime variable. didn't worked either.


$media->setFileSize(strlen($mime));

// Upload the various chunks. $status will be false until the process is complete.
$status = false;

while (! $status) {
    $status = $media->nextChunk();
    echo $status ."<br>";
}

// Reset to the client to execute requests immediately in the future.
$client->setDefer(false);

// Get sent email message id
$googleMessageId = $result->getId();

И теперь он выдает ошибку: Uncaught Google_Service_Exception: запрос слишком велик

Кстати,Файл, который я пытаюсь отправить, имеет размер 7.x МБ, а после создания сообщения MIME размер всего сообщения MIME составляет около 14 МБ, а ограничение API для отправки сообщения составляет 35 МБ.Почему он выдает Запрос слишком велик Ошибка.Пожалуйста, помогите мне в этом.

Ответы [ 2 ]

0 голосов
/ 12 июня 2018

В случае, если кто-то еще сталкивается с той же проблемой.Я решил свою проблему.В моей программе была ошибка.Я передавал закодированный $ mime в конструктор медиа.Стоит передать незашифрованную пантомиму.После этого были внесены общие изменения.

  1. Удалено $ msg-> setRaw ($ mime); эта строка.
  2. Передано без декодирования $ mimeв конструктор мультимедиа.
  3. Передал в эту строку не декодированный размер MIME $ media-> setFileSize (strlen ($ mime));

И это сработало!!

0 голосов
/ 11 июня 2018

Хорошо, в gmail есть ограничение на размер файла, попробуйте загрузить его на диск Google и поделитесь этим

...