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显示原来的文件)。