2015-06-02 16 views
6

Sto tentando di inviare un'email tramite l'API di Google con JavaScript.Impossibile inviare posta tramite google api con javascript

Il mio problema è che quando cerco di inviare una mail semplice, senza allegati, ottengo il seguente errore:

'raw' RFC822 payload message string or uploading message via /upload/* URL required`

Il mio codice

function sendMessage() { 
gapi.client.load('gmail', 'v1', function() { 
    // Web-safe base64 
    var to = '[email protected]', 
     subject = 'Hello World', 
     content = 'send a Gmail.' 

    var base64EncodedEmail = btoa(
      "Content-Type: text/plain; charset=\"UTF-8\"\n" + 
      "Content-length: 5000\n" + 
      "Content-Transfer-Encoding: message/rfc2822\n" + 
      "to: [email protected]\n" + 
      "from: \"test\" <[email protected]>\n" + 
      "subject: Hello world\n\n" + 

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

    var mail= base64EncodedEmail; 
    console.log(mail); 
    var request = gapi.client.gmail.users.messages.send({ 
     'userId': "me", 
     'message': { 
      'raw': mail 
     } 
    }); 
    request.execute(function(response){ 
    console.log(response); 
    }); 
    });   

} 
+0

correlati: http://stackoverflow.com/questions/34546142/gmail-api-for-sending-mails-in-node -js/ – Sergio

+0

Puoi spiegare perché 'sostituisci (/ \ +/g, '-'). sostituisci (/ \ // g, '_')' ••• Sostituendo '+' con '-' e'/'con' _'? Anche per semplificare usare ''' (virgoletta singola) per evitare l'escape di '' '. –

risposta

12

Dopo giorni avevo trovato la risposta il mio. Il problema era che il "messaggio" nel corpo può essere utilizzato solo quando si invia un allegato nell'e-mail.

Se non si dispone di attacco la query sembra che ho scritto qui

var mail= base64EncodedEmail; 
console.log(mail); 
var request = gapi.client.gmail.users.messages.send({ 
    'userId': "me", 
    'resource': { 
     'raw': mail 
    } 
}); 
request.execute(function(response){ 
console.log(response); 
}); 
+0

Grazie Jarno! – maxm

+0

Grazie! Trovo incoerente che' '' drafts.create''' e '' 'message.send''' non stanno usando la stessa sintassi ... –

+0

c'è una versione python per questo? – paradox

Problemi correlati