收件人地址需要带有 JavaScript 的 gmail api
Posted
技术标签:
【中文标题】收件人地址需要带有 JavaScript 的 gmail api【英文标题】:Recipient address required gmail api with JavaScript 【发布时间】:2020-08-23 11:52:30 【问题描述】:我正在尝试通过 javascript 客户端中的 Gmail API 发送带有 jpeg 文件的消息。 但我收到错误:需要收件人地址。目前我写的代码如下:
SendMails()
var img=getBase64();
const mails = [
'Content-Type: multipart/mixed; boundary="foo_bar_baz"\r\n',
'MIME-Version: 1.0\r\n',
'to: limon14203165@gmail.com\r\n',
'from: liibd7@gmail.com\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/jpeg\r\n',
'MIME-Version: 1.0\r\n',
'Content-Transfer-Encoding: base64\r\n',
'Content-Disposition: attachment; filename="example.jpg"\r\n\r\n',
img, '\r\n\r\n',
'--foo_bar_baz--'
].join('');
const path = 'upload/gmail/v1/users/me/messages/send?uploadType=multipart';
const mail = btoa(mails).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
gapi.client.request(
path: path,
headers:
'Content-Type': 'message/rfc822'
// mimeType: 'message/rfc822'
,
method: 'POST',
body:
data: mail
).then(response=>
console.log('Response:', response);
).catch(err =>
console.log('Error:', err);
);
这会导致错误响应代码 400,原因:“invalidArgument”,消息:“需要收件人地址。 我究竟做错了什么?如果有人能对此有所了解,将不胜感激!
【问题讨论】:
【参考方案1】:我认为可以使用您的请求正文。那么这个修改怎么样呢?
发件人:
const path = 'upload/gmail/v1/users/me/messages/send?uploadType=multipart';
const mail = btoa(mails).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
gapi.client.request(
path: path,
headers:
'Content-Type': 'message/rfc822'
// mimeType: 'message/rfc822'
,
method: 'POST',
body:
data: mail
).then(response=>
console.log('Response:', response);
).catch(err =>
console.log('Error:', err);
);
收件人:
const path = 'upload/gmail/v1/users/me/messages/send'; // Modified
// const mail = btoa(mails).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, ''); // Deleted
gapi.client.request(
path: path,
headers: 'Content-Type': 'message/rfc822',
method: 'POST',
body: mails // Modified
).then(response=>
console.log('Response:', response);
).catch(err =>
console.log('Error:', err);
);
注意:
此修改后的脚本假定您的gapi.client
可用于使用 Gmail API 发送邮件。
参考资料:
gapi.client.request(args) Users.messages: send【讨论】:
以上是关于收件人地址需要带有 JavaScript 的 gmail api的主要内容,如果未能解决你的问题,请参考以下文章
使用带有 Mandrill 的 Smtp 客户端发送电子邮件