使用javascript通过google api发送邮件失败
Posted
技术标签:
【中文标题】使用javascript通过google api发送邮件失败【英文标题】:Failed sending mail through google api with javascript 【发布时间】:2020-10-30 03:06:00 【问题描述】:我正在尝试使用 javascript 通过 Google API 发送电子邮件。
我的问题是,当我尝试发送没有附件的简单邮件时,出现以下错误:
'raw' RFC822 有效负载消息字符串或通过 /upload/* URL 上传消息`
我的代码
function sendMessage()
gapi.client.load('gmail', 'v1', function()
// Web-safe base64
var to = 'someone@someone.nl',
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: someone@someone.nl\n" +
"from: \"test\" <test@gmail.com>\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);
);
);
【问题讨论】:
相关:***.com/questions/34546142/… 您能解释一下为什么replace(/\+/g, '-').replace(/\//g, '_')
••• 将+
替换为-
和/
替换为_
?还可以简化使用'
(单引号)以避免转义"
。
【参考方案1】:
几天后,我自己找到了答案。问题是正文中的“消息”只能在您在电子邮件中发送附件时使用。
如果您没有附件,则查询看起来像我在这里写下的
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);
);
【讨论】:
谢谢!我发现drafts.create
和 message.send
没有使用相同的语法是不一致的......
这个有python版本吗?
Python 3.8: raw = base64.urlsafe_b64encode(message.as_bytes()).decode() gmail_api.users().messages().send(userId="me", body = 'raw ': raw).execute()以上是关于使用javascript通过google api发送邮件失败的主要内容,如果未能解决你的问题,请参考以下文章
如何通过 Javascript 中的 Google Calendar API 获取 Google Calendar 中事件的位置?
通过 google-api-javascript-client 库通过批处理文件上传获取 404 错误
Google 通过 OAuth2 身份验证从 JavaScript 客户端联系 API 问题
从 javascript 调用 Google 云打印/搜索 API