根据Gmail API发送包含大于5MB的大附件的电子邮件,您需要使用以下说明: https://developers.google.com/gmail/api/guides/uploads
API对细节不是很清楚,我试图使用我在这里找到的解释: Gmail API PHP Client Library - How do you send large attachments using the PHP client library?
我得到" 实体太大"每次都出现错误信息。
有人可以使用Gmail API成功发送超过5MB的附件,并帮助我了解我做错了什么?
我的作曲家档案:
{
"require": {
"google/apiclient": "^2.0",
"pear/mail_mime": "^1.10"
}
}
阅读完所有内容后的代码是:
<?php
set_time_limit(100);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
require_once __DIR__ . '/vendor/autoload.php';
require_once 'client.php';
$googleClient = getClient();
$mailService = new Google_Service_Gmail($googleClient);
$message = new Google_Service_Gmail_Message;
$file = __DIR__ . '/pexels-photo.jpg';
$mime = new Mail_mime;
$mime->addTo('mymail@domain.com');
$mime->setTXTBody('');
$mime->setSubject('test');
$mailMessage = base64_encode($mime->getMessage());
$message->setRaw($mailMessage);
$request = $mailService->users_messages->send(
'me',
$message,
array( 'uploadType' => 'resumable' )
);
$googleClient->setDefer(true);
$media = new Google_Http_MediaFileUpload(
$googleClient,
$request,
'message/rfc822',
$mailMessage,
$resumable = true,
$chunkSizeBytes = 1 * 1024 * 1024
);
$media->setFileSize(filesize($file));
$status = false;
$handle = fopen($file, 'rb');
while (! $status && ! feof($handle)) {
$chunk = fread($handle, $chunkSizeBytes);
$status = $media->nextChunk($chunk);
}
fclose($handle);
$googleClient->setDefer(false);
答案 0 :(得分:0)
@MP就我而言,问题是我需要设置未编码的消息大小,而不是实际文件。像这样:
$media->setFileSize(strlen($message));