Официальные документы ( Messages.attachments.get ) не очень понятны, и они даже не упоминают PHP.
Я не ищу код для копирования / вставки, но для некоторых ссылок, которые я могу понять.
Контекст : я уже понимаю OAuth2.0, и я уже успешно отправляю электронные письма.
Цель : Я хочу дублировать черновики. (Загрузите прикрепленные файлы и создайте новый черновик)
Что я пробовал?
Я обратился к проекту и получил идентификатор сообщения.
С этим идентификатором сообщения я извлекаю идентификатор вложения.
С этим идентификатором привязки я получаю сообщение message.attachment и получаю:
{ "size": 1793, "data": "iVBORll...5CYII=" }
Это «данные» – это кодировка, основанная на 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 в db) .
В новом файле PHP я хватаю их и делаю:
header("Content-type: ".$mimetype); echo base64_decode($base64data);
Все изображения не работают. (Firefox отображает черный экран)
Я пытался с другими файлами (.css и .json), и они работают нормально. (Firefox отображает файл, как он был первоначально) .