4

不要な OAUTH2 パラメータなしで Google API 経由でメールを送信したいと考えています。そのユーザーの access_token と refresh_token しか持っていません。

Request npmプラグインを使用して、NodeJSの基本的なPOSTリクエストを介してGmail API経由でメールを送信するにはどうすればよいですか?

4

2 に答える 2

7

アブラハムは正しいですが、例を挙げたいと思いました。

var request = require('request');

server.listen(3000, function () {
  console.log('%s listening at %s', server.name, server.url);

  // Base64-encode the mail and make it URL-safe 
  // (replace all "+" with "-" and all "/" with "_")
  var encodedMail = new Buffer(
        "Content-Type: text/plain; charset=\"UTF-8\"\n" +
        "MIME-Version: 1.0\n" +
        "Content-Transfer-Encoding: 7bit\n" +
        "to: reciever@gmail.com\n" +
        "from: sender@gmail.com\n" +
        "subject: Subject Text\n\n" +

        "The actual message text goes here"
  ).toString("base64").replace(/\+/g, '-').replace(/\//g, '_');

  request({
      method: "POST",
      uri: "https://www.googleapis.com/gmail/v1/users/me/messages/send",
      headers: {
        "Authorization": "Bearer 'access_token'",
        "Content-Type": "application/json"
      },
      body: JSON.stringify({
        "raw": encodedMail
      })
    },
    function(err, response, body) {
      if(err){
        console.log(err); // Failure
      } else {
        console.log(body); // Success!
      }
    });
});

この例が機能するように、受信者と送信者の電子メール アドレスを変更することを忘れないでください。

于 2015-04-08T13:01:39.893 に答える
4

OAuth2 access_tokens を Google API リクエストにアタッチするには、 2 つの方法があります。

  • 次のように access_token クエリ パラメータを使用します。?access_token=oauth2-token
  • 次のように HTTP Authorization ヘッダーを使用します。Authorization: Bearer oauth2-token

2 番目のリクエストは POST リクエストに適しているため、メールを送信するための生の HTTP リクエストは次のようになります。

POST /gmail/v1/users/me/messages/send HTTP/1.1
Host: www.googleapis.com
Authorization: Bearer oauth2Token
{"raw":"encodedMessage"}
于 2015-04-08T05:03:31.793 に答える