【问题标题】:Creating a Gmail Draft with Recipients through Gmail API通过 Gmail API 创建包含收件人的 Gmail 草稿
【发布时间】:2014-08-25 21:29:45
【问题描述】:

我一直在尝试弄清楚如何将收件人自动添加到使用 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>"
            }
          ]
        }
      }
    }
  )

【问题讨论】:

  • 这个问题和那个不同。该问题仅用于创建草稿,而此问题是将收件人添加到草稿消息中,考虑到模棱两可的文档,这很难弄清楚。

标签: ruby google-api gmail gmail-api google-api-ruby-client


【解决方案1】:

'raw' 应该包含整个 (RFC822) 电子邮件,包括正文和标题。不要使用'payload.headers'结构,解析后的格式目前只用于message.get()返回。

所以对于“原始”,您需要 Base64.urlsafe_encode64() 一个字符串,例如: "收件人:someguy@example.com\r\n发件人:myself@example.com\r\n主题:我的主题\r\n\r\n正文在这里"

【讨论】:

  • 感谢您的回答。我已将原始行切换为以下内容:'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"} 我还有什么遗漏吗?
  • 真的吗?嗯,标题似乎很好。 “收件人:test.email@gmail.com”之间有空格吗?你什么时候做的?现在再试一次以确认这种情况仍在发生吗?
  • 有效!也许我确实有一个空间,尽管我想我已经检查过了。非常感谢您的帮助!
  • 嗨@Kevin我有同样的错误'对标题无效',我的要点是什么? gist.github.com/joselo/8e7464df88344c69a42b
  • @joselo 我会将您的“msg”格式化为字符串而不是对象。尝试硬编码此答案或我的评论中的值,只需确保任何地方都没有空格,看看是否对您有帮助?
猜你喜欢
  • 2014-10-19
  • 2018-02-20
  • 1970-01-01
  • 2018-04-19
  • 1970-01-01
  • 2021-04-28
  • 1970-01-01
  • 2018-02-26
  • 2015-08-31
相关资源
最近更新 更多