node.js - node - Enviar correo electrónico con la API de Google con solo token de acceso
autenticacion por token web api (2)
Abraham tiene razón, pero pensé que podría darle un ejemplo.
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: [email protected]/n" +
"from: [email protected]/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!
}
});
});
No olvides cambiar la dirección de correo electrónico del receptor y del remitente para que el ejemplo funcione.
Deseo enviar un correo electrónico a través de la API de Google sin los parámetros innecesarios de OAUTH2. Solo tengo access_token y refresh_token de ese usuario.
¿Cómo puedo enviar un correo electrónico a través de la API de Gmail a través de una solicitud POST básica en NodeJS, con el plugin Request npm?
Hay dos métodos para adjuntar access_tokens de OAuth2 a una solicitud de la API de Google.
- Usando el parámetro de consulta access_token como este
?access_token=oauth2-token
- Usando el encabezado de Autorización HTTP como este:
Authorization: Bearer oauth2-token
El segundo se prefiere para las solicitudes POST, por lo que la solicitud HTTP sin formato para enviar un correo electrónico se vería así.
POST /gmail/v1/users/me/messages/send HTTP/1.1
Host: www.googleapis.com
Authorization: Bearer oauth2Token
{"raw":"encodedMessage"}