Я использую google's php client library, чтобы поговорить с gmail api.Получить файл с расшифрованным файлом вложения с помощью gmail API
Я пытаюсь сообщить размер файла вложения с помощью этого API.
Чтобы проверить это, я отправил себе электронное письмо с приложением. Я знал, что размер этого приложения составляет 511 КБ. Отчеты Gmail веб-интерфейс это вложение, как 499KB, который я полагаю достаточно близко:
Когда я получать изображения с помощью gmail json api, однако, я получаю правильный размер вложения:
GET https://www.googleapis.com/gmail/v1/users/me/messages/14ef5015d08312fd/attachments/ANGjdJ-Yy2H2avT5aFV7akMM2Lp4NigSpHqKgMT48zUMPVe3l6B9U0cfs-jXYD3cWJPhEwVjXQxNg2ZGDBFXKpMnf1HbpoBCwzcuOYSAJmHBbMHGANWKynofHf5GyStvjHhvNpA5xwla2hj7zdm6SVISoMgAR-dHJIPXbRniHVdryv13bxNsUeuRFvYbktnAcIwi-ppD6C1VAJtnGQYIKtNjsOa68hOlMSGLByWOrbB2txEN_P4cM43U7SEEzFmIDjFhKGkEIiU1rvrf9WT8KFVTsJ1U9_nTFjfkXIjl_Q?key={YOUR_API_KEY}
возвращает
{
"size": 510808,
"data": "encoded_data_string_uiasd82187"
}
Так есть небольшой разрыв между тем, что показывает UI Gmail веб и то, что Actua l размер прикрепления. Но вот где он получает странно:
Когда я делаю запрос на whole message (а не только вложение) иначе, запрос, как это:
GET https://www.googleapis.com/gmail/v1/users/me/messages/14ef5015d08312fd?key={YOUR_API_KEY}
я получаю ответ JSON, как это:
"body": {
"attachmentId": "ANGjdJ9P-2Q_1lMch1_smv_ZKACDE_QRtBisZ8bAWP1x_-ze8tvQiQunNCjcWUDkv2kjZo67AETe6Zmti5YZ3Zl4-EyaNtbtfxWOHBhTqQFSK673hZhEWW8Bg7Ul4ws2eOSYXrZsvWY8NhLptXJP5PM0W30LZk2sHj4XLWlmU64YxMPAOXwLOT1FeNc3EgVvlKJFQv1sUVajmA6c1K_qKgH_Y_c56fSJAz9aFRoh9RW6wvkhTV5NeLm9WFghkzpInwz6cm-DyJQhY-eOZLE2mvqQ4EmCPmBgzwNDh29mqQ",
"size": 699004
}
Таким образом, приложение с идентификатором, которое я ищу, похоже, имеет размер 699 КБ, а не 511 КБ истинного размера. Кажется, это размер закодированного вложения, а не необработанный файл.
Таким образом, с помощью клиентской библиотеки PHP, когда у меня есть Google_Service_Gmail_MessagePart
, представляющий эту привязанность, и я называю $messagepart->getBody()->getSize()
это возвращает 699004.
Что мне нужно, это истинный размер вложений, 510808.
Как я могу получить этот истинный размер, и есть ли ошибка в API gmail, показывающая неправильный размер в этом контексте?
Я зарегистрировал [hug] (https://code.google.com/a/google.com/p/apps-api-issues/issues/detail?id=4498) проблему с API-интерфейсом Google Apps трекер. – Rafa