通过Gmail API创建带有收件人的Gmail草稿

3
我一直在尝试找出如何通过Gmail API和他们的Ruby库自动添加收件人到创建的草稿邮件中。我可以成功地创建草稿,但设置收件人却给我带来了麻烦,我一直没有找到任何好的例子来展示最佳添加邮件特定内容的方法。
使用Google API playground并导入已经创建的草稿,看起来结构应该类似于下面所示的内容,但是无论何时创建草稿,都没有收件人。
  @result = client.execute(
    :api_method => gmail.users.drafts.create,
    :parameters => {
      'userId' => "me"      
    },
    :body_object => {
      'message' => {
        'raw' =>  Base64.urlsafe_encode64('Test Email Message'),
        'payload' => {
          'headers' => 
          [
            {
              'name' => "To",
              'value' => "John Smith <john_smith.fake@gmail.com>"
            }
          ]
        }
      }
    }
  )

可能是通过Google Gmail API创建草稿的重复问题。 - rds
这个问题与那个不同。那个问题只是为了创建草稿,而这个问题是在草稿邮件中添加收件人,由于文档含糊不清,很难弄清楚。 - Kevin
1个回答

7

'raw'应该包含整个(RFC822)电子邮件,包括正文和头文件。请不要使用“payload.headers”结构,该解析格式目前仅用于在message.get()期间返回。

因此,对于“raw”,您需要将类似于以下字符串进行Base64.urlsafe_encode64()编码:

"To: someguy@example.com\r\nFrom: myself@example.com\r\nSubject: my subject\r\n\r\nBody goes here"

感谢您的回答。我已将原始行更改为以下内容:'raw' => Base64.urlsafe_encode64('To:test.email@gmail.com\r\nFrom:other.email@gmail.com\r\nSubject:Test\r\n\r\nTest Email'),但现在出现错误,显示:{"error"=>{"errors"=>[{"domain"=>"global", "reason"=>"invalidArgument", "message"=>"Invalid to header"}。我还有什么遗漏吗? - Kevin
1
真的吗?嗯,那个头部看起来不错。你在"To: test.email@gmail.com"之间有空格吗?你是什么时候做的?现在再试一次确认一下是否还会出现这种情况? - Eric D
它可以工作了!也许我确实有一个空格,尽管我认为我已经检查过了。非常感谢你的帮助! - Kevin
嗨@Kevin,我遇到了相同的错误'Invalid to header',这是我的gist,有什么想法吗??https://gist.github.com/joselo/8e7464df88344c69a42b - joselo
@joselo 我建议你将 'msg' 格式化为字符串,而不是对象。尝试像这个答案或我的评论一样硬编码值,只要确保任何地方都没有空格,看看是否有帮助? - Kevin
@EricD,我只想在我的草稿中添加附件,我需要传递原始数据吗?如果是的话,你能否分享一下应该如何格式化的JSON格式。我正在尝试以下格式:{ 'raw':json附件的base64编码 }附件JSON:{ 'mimeType':'image/jpeg', 'fileName':'image_picker5608811674862066343.jpg', 'size':2290285, 'data':文件的base64编码 } - Shakti S.P. Swain

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接