真的卡在这一个上,拉着我的头发试图弄清楚要做什么,到处搜寻,尝试了一切,但仍然卡住了.任何帮助深表感谢.
所以我打电话给Gmail发送消息API:
https://www.googleapis.com/gmail/v1/users/me/messages/send
我传入以下base64编码的原始消息:
VG86IGVjaG9zaWduLnNmZGMucWFAZ21haWwuY29tDQpTdWJqZWN0OiBSZTogd2UgaGF2ZSBhIGNvb2wgcHJvZHVjdA0KSW4tUmVwbHktVG86IDxDQUFMRnBBSmc1aTJlQ1p4T2dQWlhUdnNaN0J5M0gzNlRCMkNQYTdoVEtzTXh2bXZfT3dAbWFpbC5nbWFpbC5jb20 + DQpSZWZlcmVuY2VzOiA8Q0FBTEZwQUpnNWkyZUNaeE9nUFpYVHZzWjdCeTNIMzZUQjJDUGE3aFRLc014dm12X093QG1haWwuZ21haWwuY29tPg0KDQoxMTozNg ==
哪个解码为:
To: echosign.sfdc.qa@gmail.com
Subject: Re: we have a cool product
In-Reply-To: <CAALFpAJg5i2eCZxOgPZXTvsZ7By3H36TB2CPa7hTKsMxvmv_Ow@mail.gmail.com>
References: <CAALFpAJg5i2eCZxOgPZXTvsZ7By3H36TB2CPa7hTKsMxvmv_Ow@mail.gmail.com>
11:36
Run Code Online (Sandbox Code Playgroud)
我收到错误:
状态代码:400和状态:错误请求和响应:{"error":{"errors":[{"domain":"global","reason":"invalid","message":"ByteString的值无效
问题是In-Reply-To和References标题中的符号小于<和大于>.我需要这些标题,因为我试图让电子邮件作为回复线程.我试图忽略<,>但回复然后没有线程.
谢谢
小智 25
来自Google的gmail rest api(发送消息):
"整个电子邮件消息采用RFC 2822格式化和base64url编码的字符串.当提供format = RAW参数时,在messages.get和drafts.get响应中返回."
base64 url编码与base64编码不同.
在python中,base64库提供了b64encode()和urlsafe_b64encode().如果你不使用urlsafe_b64encode(),你将得到该错误,而不是所有的时间,因此它可以通过一个简单的单元测试,但它会很快失败.
ewe*_*ein 14
如果你正在使用PHP试试这个(否则尝试将其转换为你正在使用的任何语言)
在将mime消息设置为raw属性之前,请调用以下函数.
private function base64url_encode($mime) {
return rtrim(strtr(base64_encode($mime), '+/', '-_'), '=');
}
Run Code Online (Sandbox Code Playgroud)
在Google Apps脚本中修复了此问题
var draftBody = Utilities.base64EncodeWebSafe(raw);
Run Code Online (Sandbox Code Playgroud)
不要用 var draftBody = Utilities.base64Encode(raw);
小智 5
Google API使用解码urlsafe_b64decode。尝试使用urlsafe_b64encode(使用URL安全字母编码字符串,该字母在标准Base64字母中使用-代替+和_代替/。)
在您的示例中,我看到一个+表示您使用标准Base64。
| 归档时间: |
|
| 查看次数: |
6306 次 |
| 最近记录: |