[{PageViewPlugin}] [Emergency Situation Sharing Tool] !!!Abstract GMAILを使ってEMAILをアプリケーションから出そうとしていました、相当に苦労しています。できるかな。 !!!Topics !!Googleの正式なドキュメントを探しておこう |Google APIなるものがある。コンソール[4]から使う。Gmail APIもある[5]. !!Javaでは? |クイックスタート[6]試してみる。ラベルのリストを取るだけだったら手順に従えば、割とうまくいく。 |[8]を参考にメールの送信にチャレンジ。build.gradleのdependencyにcompile 'javax.mail:mail:1.4.7'の追加を忘れずに。 |mailを送るとなるとSCOPEを変えないといけない。うまくやらないと以下のメッセージが出続ける {{{ Exception in thread "main" com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden { "code" : 403, "errors" : [ { "domain" : "global", "message" : "Insufficient Permission", "reason" : "insufficientPermissions" } ], "message" : "Insufficient Permission" } }}} |[6]で示されるGmailQuickstart.javaのソースの中にも書いてあるのだが、If modifying these scopes, delete your previously saved credentials/ folder.をやらないといけない。具体的には、tokensフォルダの中のStoredCredentialというバイナリファイルを消すと、Oauthをやり直すことになり、SCOPEが更新される。初めてGMAIL APIによるメール送信に成功!!! !!Androidでは? ->[Send Message by Gmail in Android] !!Firebaseでは? |よし、サーバを経由しよう。よって、何らかの方法でサーバにメッセージを送って保存して、それをEMAILでサーバからアプリに配信しよう。 |[Firebase]のサンプル見つけた[2]これに従ってやっていると。。。なんと、SPARKプランだと外部APIをたたけないのは知っていたが、Billing account not configured. External network is not accessible and quotas are severely limited. Configure billing account to remove these restrictionsというメッセージが。。。GMAILもたたけないのか。 {{{ I/System.out: exception = javax.mail.AuthenticationFailedException: 534-5.7.14 <https://accounts.google.com/signin/continue?sarp=1&scc=1&plt=AKgnsbtS 534-5.7.14 NZNrXO6WopLLkOsOviYc4hjQ7KaqvazAk0w0FQ1fInDZZ4go32nP5RzQ0ci2tufzg55y7n 534-5.7.14 rvN9GSNRDZF3NWwoGINBDdk-na3YqEue0CENoQNdLDm2mTKb8-WkPpgqrwTLQnLmRe5mEr 534-5.7.14 cY2Xr2ql5AjBZ3SPNT3_DLKJPRypwOhC7kmcZqVVeDVA2rDAj35H1IH7oupX2pOie07Cvr 534-5.7.14 B-xy7jfkx7XBmjjfkLF5EQEOVnCwhzJi55UsPuF-mvTGPBHFbl> Please log in via 534-5.7.14 your web browser and then try again. 534-5.7.14 Learn more at 534 5.7.14 https://support.google.com/mail/answer/78754 11-v6sm6040618pfq.43 - gsmtp finish sending email }}} |I do not know why but the error message was changed. Still does not work. !!Node.jsでは? |[Node.js]を使って送れるか試してみよう。ここ[3]を参照。Google APIの登録など途中まではうまくいったが、getLabel.jsを実行するあたりで下記のエラーがでて止まる。。。 {{{ (node:12764) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'getRoot' of undefined at list (gmail\node_modules\googleapis\build\src\apis\gmail\v1.js:529:31) at list (internal/util.js:230:26) at main (gmail\getLabels.js:31:28) at <anonymous> (node:12764) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 3) (node:12764) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code. }}} |after then, I tried this example[7], and successfully got Label list. Then how can I send message!? I will try. !!!reference #[#2]Google, Send Confirmation Emails with Cloud Functions, [https://github.com/firebase/functions-samples/tree/master/email-confirmation] #[#3]のびすけ, 2018.02.21, Google公式ライブラリを利用してNode.jsからGmailの送受信をしてみよう, [https://dotstud.io/blog/gmail-api-from-nodejs/] #[#4]Google APIs, [https://console.developers.google.com/] #[#5]Google, Gmail API, 2018年1月, [https://console.developers.google.com/apis/library/gmail.googleapis.com] #[#6]Google, 2018年8月, Java Quickstart, [https://developers.google.com/gmail/api/quickstart/java] #[#7]Google, 2018年8月, Node.js Quickstart, [https://developers.google.com/gmail/api/quickstart/nodejs] #[#8]Google, 2017年5月, Sending Email, [https://developers.google.com/gmail/api/guides/sending]