2015-06-02 13 views
6

Tôi đang cố gắng gửi email qua API Google với JavaScript.Không thể gửi thư qua google api bằng javascript

Vấn đề của tôi là khi tôi cố gắng để gửi một email đơn giản không có file đính kèm, tôi nhận được lỗi sau:

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

Mã của tôi

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

liên quan: http://stackoverflow.com/questions/34546142/gmail-api-for-sending-mails-in-node -js/ – Sergio

+0

Bạn có thể giải thích tại sao 'thay thế (/ \ +/g, '-'). thay thế (/ \ // g, '_')' ••• Thay thế '+' bằng '-' và'/'với' _'? Ngoài ra để đơn giản hóa việc sử dụng ''' (trích dẫn đơn) để tránh thoát '" '. –

Trả lời

12

Sau những ngày tôi đã tìm thấy câu trả lời bởi của riêng tôi. Vấn đề là 'thông điệp' trong cơ thể chỉ có thể được sử dụng khi bạn gửi tệp đính kèm trong email.

Nếu bạn không có tập tin đính kèm truy vấn trông giống như tôi đã viết xuống đây

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

Cảm ơn bạn Jarno! – maxm

+0

Cảm ơn! Tôi thấy nó không nhất quán rằng' '' drafts.create''' và '' 'message.send''' không sử dụng cùng một cú pháp ... –

+0

có phiên bản python nào không? – paradox

Các vấn đề liên quan