我正在尝试使用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();
现在它给了我错误:未捕获Google_Service_Exception:请求太大
顺便说一下,我试图发送的文件是7.x MB,并且在创建mime消息之后,整个mime消息的大小变为大约14MB,发送消息的API限制为35 MB。为什么要提供请求太大错误。请帮助我。
答案 0 :(得分:1)
gmail有文件大小限制尝试上传到Google云端硬盘并分享
答案 1 :(得分:1)
如果其他人遇到同样的问题。我解决了我的问题。我的程序中有错误。我正在将编码的$ mime传递给媒体构造函数。它应该是通过未编码的mime。随后的总体变化使其发挥作用。
它有效!!