首页 > 解决方案 > 使用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 ']);

标签: phpgmailgmail-api

解决方案


推荐阅读