【问题标题】:Creating a Message with Attachement GmailV1 API ruby创建带有附件的邮件 Gmail V1 API ruby
【发布时间】:2016-12-21 17:36:38
【问题描述】:

我正在尝试通过GmailV1 API 发送一封带有附件的电子邮件。但是由于 Missing Draft Message 错误,它无法正常工作。

根据RubyDoc我尝试创建一个草稿消息如下:

GmailV1:GmailService.create_user_draft() 方法接受一个标识符和一个draft_object(接受'me' 为授权用户)。一个草稿对象 (Google::Apis::GmailV1::Draft) 采用 message 形式为 Google::Apis::GmailV1::Message,而 payload 形式为 Google::Apis::GmailV1::MessagePart,它具有所需的 filename 方法。

所以我运行了这段代码:

##assume client is an authorized instance of Google::Apis::GmailV1:GmailService
msg_part = Google::Apis::GmailV1::MessagePart.new(filename: 'path/to/file')
msg = Google::Apis::GmailV1::Message.new(payload: msg_part)
draft = Google::Apis::GmailV1::Draft.new(message: msg)
client.create_user_draft('me', draft)

>> Google::Apis::ClientError: invalidArgument: Missing draft message

怎么会?

版本:

  • google-api-client 0.9.9

  • googleauth 0.5.1

  • 红宝石 2.3.1p112

【问题讨论】:

  • 你有没有偶然发现this great answer?可能会提供一些线索。
  • 我有,但它指的是旧版本的 API,现在在各个方面都完全不同,从身份验证到发出 API 请求。它在这里不适用/帮助。

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


【解决方案1】:

使用here 所述的GmailService 类,我能够使用下面的代码保存草稿。我认为关键是消息中需要raw关键字。

result = service.create_user_draft(
  user_id,
  Google::Apis::GmailV1::Draft.new(
    :message => Google::Apis::GmailV1::Message.new(
      :raw => "To: test@test.com\r\nSubject: Test Message\r\n\r\nTest Body"
    )
  )
)

【讨论】:

    【解决方案2】:

    我解决了这个问题,首先用“邮件”gem 创建了一个邮件对象:

    require 'mail'
    
    mail = Mail.new
    mail['from'] = 'pippo@pluto.it'
    mail[:to]    = 'me@mymail.it'
    mail.subject = 'This is a test email'
    mail.body 'this is the body'
    mail.add_file("./path/to/file")
    #... and other ...
    

    然后我将其转换为原始对象:

    raw_message = mail.to_s
    

    然后我用这个原始创建 gmail 消息:

    message = Google::Apis::GmailV1::Message.new(
      :raw => raw_message  
    )
    

    最后:

    draft = Google::Apis::GmailV1::Draft.new(message: message)
    gmail.create_user_draft('me', draft)
    

    【讨论】:

      猜你喜欢
      • 2016-05-29
      • 2018-11-11
      • 2016-09-22
      • 1970-01-01
      • 2020-10-12
      • 2017-07-24
      • 1970-01-01
      • 2015-10-25
      • 2019-02-24
      相关资源
      最近更新 更多