在 GMail 中获取附件 API

Get attachments in GMail API

我正在尝试从 golang 中的邮件中获取附件。问题出在从 Gmail 读取的 base64 负载中,给我错误

illegal base64 data at input byte 13

这是我的代码(省略错误处理) ..

attach, _ := srv.Users.Messages.Attachments.Get(user, messageid, attachmentid).Do()
decoded, err := base64.StdEncoding.DecodeString(attach.Data)

这会引发上述错误,如果我查看 GMail 中的原始邮件,可以在 headers 之后看到:

begin 644 filename-of-the-attachment.extension
M'XL(`/Y;GU8``^S]R[(>R9&E"\[[*5)JVI*6;N9WS(_TD3/J0<U:>H`*;F9"...

感谢任何帮助 谢谢

问题出在 base64 编码中:正如文档所说,有效负载(在 "full" 或 "raw" 模式下)采用 base64URL 编码,而不是 base64。 所以这段代码有效:

attach, _ := srv.Users.Messages.Attachments.Get(user, messageid, attachmentid).Do()
decoded, err := base64.URLEncoding.DecodeString(attach.Data)
fileout, err := os.OpenFile(...

也就是说,我看到完整模式(默认)更容易处理 :)