【问题标题】:Missing file in my email when doing resumable upload with gmail api使用 gmail api 进行可恢复上传时,我的电子邮件中缺少文件
【发布时间】:2016-07-11 13:38:52
【问题描述】:

我想得到一些帮助,因为我现在有点迷茫。 我正在尝试通过可恢复上传来发送电子邮件附件。但是当我查看收件箱中的电子邮件时,我没有看到任何文件。所以我可能忘记了什么。

这是我的代码。所以如果有人看到了什么^^

$send_data = 'From: <FROM_EMAIL>' . "\n";
$send_data = 'To: <TO_EMAIL>' . "\n";
$send_data = 'Subject: <SUBJECT>' . "\n";
$send_data = '' . "\n";
$send_data = '<MY MESSAGE>' . "\n";

$send_data= rtrim(strtr(base64_encode($send_data), '+/', '-_'), '=');

$msg = new \Google_Service_Gmail_Mesage();
$msg->setRaw($send_data);

$this->client->setDefer(true);
$request = $this->service->users_messages->send('me', $msg, array('uploadType' => 'resumable'));

$chunkSizeBytes = 1 * 1024 * 1024;
$media = new  \Google_Http_MediaFileUpload(
    $this->client,
    $request,
    'message/rfc822',
    null,
    true,
    $chunkSizeBytes
);
$media->setFileSize(filesize(TEST_FILE));

$status = false;
    $handle = fopen(TEST_FILE, "rb");
    $i = 0;
    while (!$status && !feof($handle)) {
        $chunk = fread($handle, $chunkSizeBytes);
        $status = $media->nextChunk($chunk);
    }
    $result = false;
    if($status != false) {
        $result = $status;
    }
    fclose($handle);
$this->client->setDefer(false);

谢谢

【问题讨论】:

    标签: api email upload attachment gmail-api


    【解决方案1】:

    我对 gmail api 了解不多,但我觉得 setRaw() 需要您撰写完整的电子邮件(包括附件)而不是“正文”。

    【讨论】:

    • 如果我在电子邮件中包含附件(base64 编码),我的文件大小限制为 5mb(或更小)。
    • 这是一个棘手的部分,一些服务提供商根据原始文件(即二进制文件)计算大小,而其他服务提供商则根据编码大小(例如 base64)。
    • (编辑)在发表此评论之前我没有仔细阅读。你确定5MB是限制吗?对我来说似乎是25MB
    • 确实,当我们使用可恢复上传时,它甚至是 35mb。但根据我的理解,以下是可恢复上传的工作原理: 1) 第一个请求是正常请求,限制为 5mb,因此,如果我添加一个大附件,就会达到限制。 2) 以下请求是关于上传被切割成多个块的文件。瞧,我不知道我是否足够清楚,但这就是我的看法^^
    猜你喜欢
    • 2017-06-11
    • 2016-11-25
    • 2017-11-01
    • 2011-10-14
    • 2018-01-26
    • 2021-10-14
    • 1970-01-01
    • 2018-01-31
    • 2021-04-17
    相关资源
    最近更新 更多