質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

0回答

3439閲覧

【JavaScript】gmail apiで送信が上手く出来ない

fms

総合スコア12

Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2017/01/09 05:04

###前提・実現したいこと
gmail apiを用いてメールの送信をしたいのですが、現時点で認証が上手くいかずに困っています。
どうすれば送信出来るのでしょうか。
以下のページを参考にさせていただきました。
http://tech.respect-pal.jp/gmailapi-send-mail/
https://teratail.com/questions/37542
###該当のソースコード

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script type="text/javascript"> var CLIENT_ID = ''; var SCOPES = ['https://mail.google.com/'].join(' '); function onLoadCallbackFunction() { gapi.auth.authorize( { 'client_id': CLIENT_ID, 'scope': SCOPES, 'immediate': true }, handleAuthResult); } function handleAuthResult(authResult) { if (authResult && !authResult.error) { gapi.client.load('gmail', 'v1', callbackFunction); console.log(authResult); console.log(authResult.error); } else { // error alert("認証エラーです"); } } function handleAuthClick(event) { gapi.auth.authorize( { 'client_id': CLIENT_ID, 'scope': SCOPES, 'immediate': false }, handleAuthResult); return false; } function callbackFunction() { var mimeData = ["To: light_zushi@yahoo.co.jp", "Subject: =?utf-8?B?" + window.btoa(unescape(encodeURIComponent("日本語の件名"))) + "?=", "MIME-Version: 1.0", "Content-Type: text/plain; charset=UTF-8", "Content-Transfer-Encoding: 7bit", "", "ここから本文"].join("\n").trim(); var raw = window.btoa(unescape(encodeURIComponent(mimeData))).replace(/+/g, '-').replace(///g, '_'); gapi.client.gmail.users.messages.send({ 'userId': 'me', 'resource': { 'raw': raw } }).execute(function() { // 送信後の処理 alert("メールを送信しました。"); }); } </script> <script src="https://apis.google.com/js/client.js?onload=onLoadCallbackFunction"></script> </head> <body> </body> </html>

###試したこと
scopeに関してですが、
https://developers.google.com/gmail/api/auth/scopes
上記のページから、
https://www.googleapis.com/auth/gmail.send
のscopeを使っていたのですが、ソースコード内の「認証エラー」と表示されました。

https://www.googleapis.com/auth/gmail.readonly
一方、上記のreadonlyのscopeに関しては、「メールを送信しました。」と表示はされるのですが、
Failed to load resource: the server responded with a status of 403 ()
と吐かれてしまい送信ができない状況です。(readonlyなので送信できなくて当然なのですが...)

仕方なくフルアクセスのscopeを用いたのですが、「認証エラー」と出てお手上げ状態です。

###補足情報(言語/FW/ツール等のバージョンなど)
gmailのapiのクライアントキーについてですが、Oauth2.0のクライアントIDを生成し、
承認済みの JavaScript 生成元にはxamppを用いているので、
http://localhost
と設定し、承認済みのリダイレクト URIにはソースコードのURLを設定しました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問