用于发送带附件的电子邮件的GMAIL API

问题描述:

我正在致力于一个能够读取包含图像url列表的CSV的javascript客户端。用于发送带附件的电子邮件的GMAIL API

我能够通过jquery-csv读取csv并在html5画布中绘制每个图像。

下一步是为每个图像应用一个文本图层并使用gmail api通过电子邮件发送图像。

所以我的困惑是找到一个例子,告诉我如何拍摄一张画布并将其附加到只使用JavaScript的电子邮件。

是否有我根据multipart gmail指导原则构建一个json,并将其作为POST body发送到指定位置?

你能给我举个例子吗?

+0

是否要发送画布为例如一个PNG图像? – Tholle

+0

是的......可以在飞行中完成吗?或者......但主要...... javascrip gmail api使用的是什么? – Alex

// Get the canvas from the DOM and turn it into base64-encoded png data. 
var canvas = document.getElementById("canvas"); 
var dataUrl = canvas.toDataURL(); 

// The relevant data is after 'base64,'. 
var pngData = dataUrl.split('base64,')[1]; 

// Put the data in a regular multipart message with some text. 
var mail = [ 
    'Content-Type: multipart/mixed; boundary="foo_bar_baz"\r\n', 
    'MIME-Version: 1.0\r\n', 
    'From: [email protected]\r\n', 
    'To: [email protected]\r\n', 
    'Subject: Subject Text\r\n\r\n', 

    '--foo_bar_baz\r\n', 
    'Content-Type: text/plain; charset="UTF-8"\r\n', 
    'MIME-Version: 1.0\r\n', 
    'Content-Transfer-Encoding: 7bit\r\n\r\n', 

    'The actual message text goes here\r\n\r\n', 

    '--foo_bar_baz\r\n', 
    'Content-Type: image/png\r\n', 
    'MIME-Version: 1.0\r\n', 
    'Content-Transfer-Encoding: base64\r\n', 
    'Content-Disposition: attachment; filename="example.png"\r\n\r\n', 

    pngData, '\r\n\r\n', 

    '--foo_bar_baz--' 
].join(''); 

// Send the mail! 
$.ajax({ 
    type: "POST", 
    url: "https://www.googleapis.com/upload/gmail/v1/users/me/messages/send?uploadType=multipart", 
    contentType: "message/rfc822", 
    beforeSend: function(xhr, settings) { 
    xhr.setRequestHeader('Authorization','Bearer {ACCESS_TOKEN}'); 
    }, 
    data: mail 
}); 
+0

它给了我这个错误:{ “错误”:{ “错误”: { “域”: “全局”, “理由”: “authError”, “消息”: “无效的凭证”, “的locationType”: “首标”, “位置”: “授权” } ], “代码”:401, “消息”: “无效凭证” } }谷歌显影剂控制台上我创建新的客户端ID与Web应用程序specifingn JavaScript位置来源:http:// localhost:8080 ...我的项目是一个tomcat实例上的JavaScript页面。奇怪的是,每次我从同一个应用程序发出请求时,访问令牌都会发生更改。 – Alex

+0

@Alex授权Gmail v1范围[此处](https://developers.google.com/oauthplayground/),并尝试从中获得的令牌。这应该作为一个测试。 – Tholle

+0

我创建了测试访问令牌并从您建议我的页面发送请求。从那里一切正常。如果我在javascript应用程序中使用相同的标记,它会使我产生与我以前的评论中相同的错误。 401未经授权的无效凭证。有什么处理我的客户ID创建? – Alex