【Golang】Gmail API メール本文のデコード
以前できなくて悩んでいた所が最近再度見てみたらサクッと解決できたのでメモ。
結論
base64
パッケージのStdEncoding
ではなくURLEncoding
を使えばOK。
以前はStdEncoding
を使って、うまくできない、途中で途切れてしまう〜と悩んでいました。
以下の感じで取れます。
message, err := srv.Users.Messages.Get(user, m.Id).Format("full").Do() message, err := srv.Users.Messages.Get(user, m.Id).Format("full").Do() if err != nil { log.Fatalf("Unable to retrieve messages: %v", err) } body := message.Payload.Body data := body.Data decodedMessage, _ := b64.URLEncoding.DecodeString(data)
GmailAPIの仕様
については今回は割愛しますが、自分は主にusers.messages.list
メソッドにクエリーを投げてmessageId
を取得し、取得したmessageId
をusers.messages.list
へのリクエストに投げてメール本文を取得、という感じでつかってます。
取得したメールのオブジェクトの構造は以下URLの通りなので、この通りbody.data
までを辿って上記の通りデコードすれば本文が取得出来ます。