Can't open downloaded attachments from Gmail API

前端 未结 3 542
孤街浪徒
孤街浪徒 2021-01-22 22:59

I feel like I\'m missing something stupid...

I\'m using the PHP SDK for the new Gmail API to fetch an attachment from an email. I can get the attachment content, but un

相关标签:
3条回答
  • 2021-01-22 23:18

    Try the following to decode returned attachment data before writing it to file.

    $attachment_data = urlsafe_b64decode(utf8_encode($data->data));
    

    worked for me.

    0 讨论(0)
  • 2021-01-22 23:24

    There may be an issue with decoding the attachment data. Try using this string replace on the attachment data before writing it to a file.

      
        $data = $g->gmail->users_messages_attachments->get($email_account, $email_message_id, $p->getBody()->getAttachmentId());
    
        // Converting to standard RFC 4648 base64-encoding
        // see http://en.wikipedia.org/wiki/Base64#Implementations_and_history
        $data = strtr($data, array('-' => '+', '_' => '/'));
    
        $fh = fopen(DOC_ROOT."/file.pdf", "w+");
        fwrite($fh, base64_decode($data->data));
        fclose($fh);
    
    
    0 讨论(0)
  • 2021-01-22 23:36

    You also need to join the path of where you want to store your file with the filename part of the message payload.

    I'm not particularly well versed in php, but in python it would be the equivilent of:

    path = ''.join([store_dir, part['filename']])
    f = open(path, 'w')
    f.write(file_data)
    f.close()
    

    Where the file_data is what you have decoded (your $data)

    0 讨论(0)
提交回复
热议问题