Gmail API导入 - 错误413请求实体太大

时间:2016-07-20 20:48:00

标签: php codeigniter gmail-api google-api-php-client

我正在使用Google API PHP客户端。我正在编写一个程序,将批量邮件从一个帐户导入另一个帐户。要导入,我使用的是:

$service->users_messages->import('me', $message, $options);

..其中$ message是来自$service->users_messages->get()的原始邮件。

首先,程序从一个帐户获取消息列表。用户选择要导入的消息,然后单击“导入”按钮。导入循环选定的消息并正常工作,但有些消息包含大型附件。这些消息将失败并返回错误413 - 请求实体太大。

我已经读过,我需要指出上传类型应该是多部分。 我使用的是Google API PHP客户端,但我没有看到任何添加此上传类型的方法,类或选项。

任何建议都会有所帮助。感谢。

1 个答案:

答案 0 :(得分:0)

尝试将变量$ message设置为此mail with attachment代码段。

$strRawMessage .= "\r\n--{$boundary}\r\n";
$strRawMessage .= 'Content-Type: '. $mimeType .'; name="'. $fileName .'";' . "\r\n"; 
$strRawMessage .= 'Content-ID: <' . $strSesFromEmail . '>' . "\r\n"; 
$strRawMessage .= 'Content-Description: ' . $fileName . ';' . "\r\n";
$strRawMessage .= 'Content-Disposition: attachment; filename="' . $fileName . '"; size=' . filesize($filePath). ';' . "\r\n";
$strRawMessage .= 'Content-Transfer-Encoding: base64' . "\r\n\r\n";
$strRawMessage .= chunk_split(base64_encode(file_get_contents($filePath)), 76, "\n") . "\r\n";
$strRawMessage .= '--' . $boundary . "\r\n";

$strRawMessage .= "\r\n--{$boundary}\r\n";
$strRawMessage .= 'Content-Type: text/plain; charset=' . $charset . "\r\n";
$strRawMessage .= 'Content-Transfer-Encoding: 7bit' . "\r\n\r\n";
$strRawMessage .= $strMailTextVersion . "\r\n";

$strRawMessage .= "--{$boundary}\r\n";
$strRawMessage .= 'Content-Type: text/html; charset=' . $charset . "\r\n";
$strRawMessage .= 'Content-Transfer-Encoding: quoted-printable' . "\r\n\r\n";
$strRawMessage .= $strMailContent . "\r\n";
// The message needs to be encoded in Base64URL
$mime = rtrim(strtr(base64_encode($strRawMessage), '+/', '-_'), '=');
$msg = new Google_Service_Gmail_Message();
$msg->setRaw($mime);

另请检查此curl implementation或此ajax implementation