php - 使用php中的Gmail API发送超过5 MB大小的附件时获取请求实体太大错误413
问题描述
错误 :
致命错误:未捕获的 Google_Service_Exception:请求实体太大
请求的实体太大
错误 413
在 C:\xampp\htdocs\gmail\vendor\google\apiclient\src\Google\Http\REST.php:118 堆栈跟踪:#0 C:\xampp\htdocs\gmail\vendor\google\apiclient\src\Google \Http\REST.php(94): Google_Http_REST::decodeHttpResponse(Object(GuzzleHttp\Psr7\Response), Object(GuzzleHttp\Psr7\Request), 'Google_Service_...') #1 C:\xampp\htdocs\gmail \vendor\google\apiclient\src\Google\Task\Runner.php(176): Google_Http_REST::doExecute(Object(GuzzleHttp\Client), Object(GuzzleHttp\Psr7\Request), 'Google_Service_...') #2 C:\xampp\htdocs\gmail\vendor\google\apiclient\src\Google\Http\REST.php(58): Google_Task_Runner->run() #3 C:\xampp\htdocs\gmail\vendor\google\apiclient \src\Google\Client.php(798): Google_Http_REST::execute(Object(GuzzleHttp\Client), Object(GuzzleHttp\Psr7\Request), 'Google_Service_...', Array) #4 C:\xampp\htdocs\gmail\vendor\ 在 C:\xampp\htdocs\gmail\vendor\google\apiclient\src\Google\Http\REST.php 第 118 行代码 :$strRawMessage .= 'To: ' 。encodeRecipients(" <" . $strToMail . ">") 。"\r\n"; $strRawMessage .= '主题:=?utf-8?B?' . base64_encode($strSubject) 。"?=\r\n"; $strRawMessage .= "MIME 版本:1.0\r\n"; $strRawMessage .= '内容类型:可恢复;边界=“'。$边界。'”'。"\r\n"; $strRawMessage .= '内容传输编码:分块' 。"\r\n\r\n";
/*************附件**************/ $basename = basename($filePath); $fileTempPath = sys_get_temp_dir() 。“/”。$基本名称;file_put_contents($fileTempPath, file_get_contents($filePath)); $finfo = finfo_open(FILEINFO_MIME_TYPE); // 返回 mime 类型 ala mimetype 扩展 $mimeType = finfo_file($finfo, $fileTempPath); $fileData = base64_encode(file_get_contents($fileTempPath)); $strRawMessage .= "\r\n--{$boundary}\r\n"; $strRawMessage .= '内容类型:' 。$mimeType 。'; name="' . $basename . '";' . "\r\n"; //$strRawMessage .= 'Content-Type: message/rfc822 ' . "\r\n"; $strRawMessage .= '内容 ID:<' 。$基本名称。'>' 。"\r\n"; $strRawMessage .= '内容长度:' 。文件大小($fileTempPath)。"\r\n"; $strRawMessage .= 'X-Upload-Content-Type: message/rfc822' 。"\r\n"; $strRawMessage .= 'X-Upload-Content-Length: ' 。文件大小($fileTempPath)。"\r\n"; $strRawMessage .= '内容描述:' 。$基本名称。';' . "\r\n"; $strRawMessage .= '内容处置:附件;文件名="' . $basename . '"; 大小='。文件大小($fileTempPath)。';' . "\r\n"; $strRawMessage .= '内容传输编码:分块' 。"\r\n\r\n"; $strRawMessage .= chunk_split($fileData, 76, "\r\n") 。"\r\n"; $strRawMessage .= "--{$boundary}\r\n"; \r\n"; $strRawMessage .= 'X-Upload-Content-Length: ' . filesize($fileTempPath) . "\r\n"; $strRawMessage .= 'Content-Description: ' . $basename . '; ' . "\r\n"; $strRawMessage .= 'Content-Disposition: attachment; filename="' . $基本名称。'"; size=' .filesize($fileTempPath) . ';' . "\r\n"; $strRawMessage .= 'Content-Transfer-Encoding: chunked' . "\r\n\r\n"; $strRawMessage .= chunk_split($fileData, 76, "\r\n" ) . "\r\n"; $strRawMessage .= "--{$boundary}\r\n"; \r\n"; $strRawMessage .= 'X-Upload-Content-Length: ' . filesize($fileTempPath) . "\r\n"; $strRawMessage .= 'Content-Description: ' . $basename . '; ' . "\r\n"; $strRawMessage .= 'Content-Disposition: attachment; filename="' . $基本名称。'"; size=' .filesize($fileTempPath) . ';' . "\r\n"; $strRawMessage .= 'Content-Transfer-Encoding: chunked' . "\r\n\r\n"; $strRawMessage .= chunk_split($fileData, 76, "\r\n" ) . "\r\n"; $strRawMessage .= "--{$boundary}\r\n"; = '内容-处置:附件;文件名="' . $basename . '"; 大小='。文件大小($fileTempPath)。';' . "\r\n"; $strRawMessage .= '内容传输编码:分块' 。"\r\n\r\n"; $strRawMessage .= chunk_split($fileData, 76, "\r\n") 。"\r\n"; $strRawMessage .= "--{$boundary}\r\n"; = '内容-处置:附件;文件名="' . $basename . '"; 大小='。文件大小($fileTempPath)。';' . "\r\n"; $strRawMessage .= '内容传输编码:分块' 。"\r\n\r\n"; $strRawMessage .= chunk_split($fileData, 76, "\r\n") 。"\r\n"; $strRawMessage .= "--{$boundary}\r\n";
/*************Attachment**************/
$strRawMessage .= "--{$boundary}\r\n";
$strRawMessage .= 'Content-Type: application/json; charset=' . $charset . "\r\n";
//$strRawMessage .= 'Content-Transfer-Encoding: 8bit' . "\r\n\r\n";
$strRawMessage .= $strMessage . "\r\n";
$mime = rtrim(strtr(base64_encode($strRawMessage), '+/', '-_'), '=');
$message->setRaw($mime);
$messagesResponse = $service->users_messages->send('me', $message, ['uploadType' => 'resumable ']);
解决方案
推荐阅读
- javascript - 使用 AJAX POST/GET 方法解析 Base64 字符串时的未定义索引
- jquery - 有条件的切换类
- c# - 如果我不能在 C# 中调用析构函数,为了安全起见销毁对象的解决方案是什么?
- java - 滚动窗格中的 TextField 未正确显示
- macos - 如何使用 IOHIDManager 或蓝牙读取 iOS 键盘上的 home 键?
- php - incIude.php,在“l”位置用大写“i”拼写
- python - 纸浆和 OR-Tools 替代品
- search - 在 wooocmmerece 网站上应用无限滚动未按预期工作
- angular - 有 Promise 的 Jasmine 测试构造函数
- architecture - 架构:微服务、多重需求和共享数据