通过PHP从Gmail API中的消息草稿下载附件

时间:2017-09-20 08:12:46

标签: php gmail-api

official docs Messages.attachments.get )不是很清楚,他们甚至没有提到PHP。

我不是在寻找复制/粘贴代码,而是寻找一些我能理解的参考文献。

上下文:我已经了解OAuth2.0并且我已经成功发送了电子邮件。

目的:我想复制草稿。 (下载附件并创建新草稿)

我尝试了什么?

我访问了草稿并获得了消息ID。

使用该消息ID我获取附件ID。

使用该附件ID我获取 message.attachment ,然后获取:

{
"size": 1793,
"data": "iVBORll...5CYII="
}

“data”是文件的base64编码版本,我也有MIME类型,所以我正在尝试处理它。

这是我正在做的实际代码:

$draft = $service->users_drafts->get('me', $draftId);

$borrador =  (array) $draft;

$protegido = chr(0).'*'.chr(0);

$MODELAZO=$borrador[$protegido.'modelData'];


$mensaje_id=$MODELAZO['message']['id'];


$adjuntos=$MODELAZO['message']['payload']['parts'];

echo '<h1>Parte Gorda Desmenuzada:</h1>';

echo '<pre>';
print_r($adjuntos);
echo '</pre>';

echo '<h1>Archivos:</h1>';


// Qué mimetypes no son de archivos adjuntos
$mimetypezitos=array(
'image/png',
'image/jpeg',

'application/json',
'application/pdf',

'text/css'
);

foreach($adjuntos as $adjunto){
    $mimetype=$adjunto['mimeType'];

    if(in_array($mimetype,$mimetypezitos)){

        $filename=$adjunto['filename'];
        $attachmentId=$adjunto['body']['attachmentId'];

        echo '<h2>Adjunto: '.$mimetype.'</h2>';
        echo '<p>Nombre: '.$filename.'<p>'; 
        echo '<p>AttID: '.$attachmentId.'<p>';


        $q = 'https://www.googleapis.com/gmail/v1/users/me/messages/'.$mensaje_id.'/attachments/'.$attachmentId.'?access_token='.$_SESSION['access_token']['access_token'];
        $blablason = json_decode(file_get_contents($q),true);

        $base64data=$blablason['data'];

        echo '<p>Data: '.$base64data.'<p>';

        echo '<p>Imagen: <img src="data:image/png;base64, '.$base64data.'" alt="Base 64 Imagen" /></p>';


    }


}

还有一个小问题

为了测试,我将此信息(mimetype和base64data保存到数据库中)保存

在一个新的PHP文件中,我抓住它们并执行:

header("Content-type: ".$mimetype);
echo base64_decode($base64data);

所有图片都不起作用。 (Firefox显示黑屏)

我尝试了其他文件(.css和.json)并且它们正常工作。 (Firefox显示原来的文件)

0 个答案:

没有答案