J'essaye les apis de gmail. J'ai fait l'auth. Maintenant, je veux créer un brouillon. Mais je reçois cette erreurJS convertir la chaîne en rfc822
{ error:
I20161220-15:53:43.486(4)? { errors: [Object],
I20161220-15:53:43.487(4)? code: 400,
I20161220-15:53:43.488(4)? message: 'Media type \'application/octet-stream\' is not supported. Valid media types: [message/rfc822]' } } }
Les API Gmail nécessitent une chaîne base64 avec la norme rfc822. Je ne suis pas sûr d'un bon moyen de convertir une chaîne en rfc822. Comment je fais ça? J'utilise météore pour mon application et voici mon code.
import { Meteor } from 'meteor/meteor'
import { HTTP } from 'meteor/http'
Meteor.startup(() => {
// Meteor.call('createDraft')
Meteor.methods({
'createDraft': function() {
console.log(this.userId)
const user = Meteor.users.findOne(this.userId)
const email = user.services.google.email
console.log(email)
const token = user.services.google.accessToken
const dataObject = {
message: {
raw: CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse('dddd'))
},
headers: {
Authorization: `Bearer ${token}`
}
}
HTTP.post(`https://www.googleapis.com/upload/gmail/v1/users/${email}/drafts`, dataObject, (error, result) => {
if (error) {
console.log('err', error)
}
if (result) {
console.log('res', result)
}
})
}
})
})
[RFC822] (https://www.ietf.org/rfc/rfc0822.txt) est le bon vieux protocole de messagerie depuis le début des années 1980. Ce que Gmail signifie (apparemment), c'est que vous devez composer un e-mail correctement formaté, avec des en-têtes appropriés et un corps valide. Il ne se plaint pas du format de vos chaînes. –