Scarica i file allegati da una bozza di messaggio nell'API di Gmail tramite PHP

I documenti ufficiali ( Messages.attachments.get ) non sono molto chiari e non menzionano nemless PHP.

Non sto cercando un codice copia / incolla ma per alcuni riferimenti che posso capire.

Context : ho già capito OAuth2.0 e sto già inviando messaggi e-mail con successo.

Scopo : voglio duplicare le bozze. (Scarica i file allegati e crea una nuova bozza)

Che cosa ho provato?

Ho avuto accesso alla bozza e ho ricevuto l'id del messaggio.

Con quell'ID messaggio, recupero l'ID allegato.

Con quell'id allegato, prendo il messaggio.attacco , e ottengo:

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

Quel "dato" è la versione codificata base64 del file, e anch'io ho il MIME Type, quindi sto cercando di elaborarlo.

Questo è il codice effettivo di ciò che sto facendo:

 $draft = $service->users_drafts->get('me', $draftId); $borrador = (arrays) $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=arrays( 'image/png', 'image/jpeg', 'application/json', 'application/pdf', 'text/css' ); foreach($adjuntos as $adjunto){ $mimetype=$adjunto['mimeType']; if(in_arrays($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>'; } } 

E c'è un piccolo problema in corso :

Per motivi di prova, sto salvando queste informazioni (mimetype e base64data in un db) .

In un nuovo file PHP li prendo e faccio:

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

Tutte le immagini non funzionano. (Firefox visualizza lo schermo nero)

Ho provato con altri file (.css e .json) e stanno funzionando bene. (Firefox visualizza il file come era in origine) .