【问题标题】:Issues with getting sendgrid-ruby library to run as ruby script让 sendgrid-ruby 库作为 ruby​​ 脚本运行的问题
【发布时间】:2017-10-02 20:54:18
【问题描述】:

我正在尝试让 sendgrid-ruby 库发送电子邮件,并且我设法编写了一个脚本,我可以逐行运行并开始工作。但是,当我尝试将脚本作为一个整体运行时,我得到了

/Users/andrewaccuardi/.rvm/gems/ruby-2.4.1/gems/sendgrid-ruby-5.1.0/lib/sendgrid/client.rb:24:in `+': no implicit conversion of nil into String (TypeError)

这是我用于调用的代码:

require 'sendgrid-ruby'
include SendGrid

sg = SendGrid::API.new(api_key: ENV['SENDGRID_API_KEY'])
email = SendGrid::Mail.new
email.from = SendGrid::Email.new(email: "example@email.com", name: "Example User")
email.subject = "Your Email's Subject"

p = SendGrid::Personalization.new
p.add_to(SendGrid::Email.new(email: "example_email", name: "example_name"))
p.add_substitution(Substitution.new(key: '-companyName-', value: 'Example_company'))
p.add_substitution(Substitution.new(key: '-eventName-', value: 'DINOSAUR PARTY'))
p.add_substitution(Substitution.new(key: '-eventDays-', value: '35'))
p.add_substitution(Substitution.new(key: '-eventStartDate-', value: '08/15/1993'))
p.add_substitution(Substitution.new(key: '-eventEndDate-', value: '12/22/1992'))
p.add_substitution(Substitution.new(key: '-eventStartTime-', value: '12:30pm'))
p.add_substitution(Substitution.new(key: '-eventEndTime-', value: '12:30am'))
p.add_substitution(Substitution.new(key: '-eventAddress-', value: '1234 SE Main St.'))
p.add_substitution(Substitution.new(key: '-eventYears-', value: '3'))
p.add_substitution(Substitution.new(key: '-eventWebsite-', value: 'www.example.com'))
p.add_substitution(Substitution.new(key: '-eventFacebook-', value: 'facebook.com/example'))
p.add_substitution(Substitution.new(key: '-eventTwitter-', value: 'twitter.com/example'))
p.add_substitution(Substitution.new(key: '-eventOtherMedia-', value: 'othermedia.com/example'))
p.add_substitution(Substitution.new(key: '-eventDescription-', value: "Vape shoreditch fixie man bun vexillologist VHS. You probably haven't heard of them stumptown edison bulb, echo park narwhal +1 skateboard portland poutine pok pok bitters activated charcoal pinterest. Mlkshk 90's jean shorts kale chips four dollar toast glossier. Ennui semiotics brunch twee man braid lumbersexual chia plaid. Crucifix kogi tofu cardigan. Roof party sustainable jean shorts umami asymmetrical dreamcatcher. Offal biodiesel edison bulb tofu raw denim cred. Kogi banh mi shoreditch."))
p.add_substitution(Substitution.new(key: '-eventAttendance-', value: '50+'))
p.add_substitution(Substitution.new(key: '-eventCategory-', value: 'Entertainment'))
p.add_substitution(Substitution.new(key: '-eventGender-', value: 'Female'))
p.add_substitution(Substitution.new(key: '-eventAge-', value: '21+'))
p.add_substitution(Substitution.new(key: '-eventRequest-', value: 'Beer'))
p.add_substitution(Substitution.new(key: '-sellingRequest-', value: 'Email Blast'))
p.add_substitution(Substitution.new(key: '-repsNeeded-', value: '5'))
p.add_substitution(Substitution.new(key: '-tapsNeeded-', value: '10'))
p.add_substitution(Substitution.new(key: '-cupsNeeded-', value: '15'))
p.add_substitution(Substitution.new(key: '-alcoholPermit-', value: 'Yeah, buddy'))
p.add_substitution(Substitution.new(key: '-food-', value: 'Pizza'))
p.add_substitution(Substitution.new(key: '-promoOpps-', value: 'Lots'))
p.add_substitution(Substitution.new(key: '-nonProfName-', value: 'Non-profit example name'))
p.add_substitution(Substitution.new(key: '-nonProfWebsite-', value: 'www.nonprofitexample.com'))
p.add_substitution(Substitution.new(key: '-nonProfEmail-', value: 'examplenonprofit@email.com'))
p.add_substitution(Substitution.new(key: '-nonProfPhone-', value: '555-555-3331'))

email.add_personalization(p)
email.template_id = "684f302c-5669-4114-a953-c3e15d6de44d"
response = sg.client.mail._('send').post(request_body: email.to_json)
puts response.status_code
puts response.body
puts response.headers

任何关于如何前进的见解都会很棒,谢谢!

【问题讨论】:

  • "Authorization": "Bearer ' + @api_key + '" - 这是来自 client.rb 文件的第 24 行。你确定 '@api_key' 不是 nil 吗?
  • 当我在rails c 中运行该行时,它会输出正确的响应。 @api_key 是正确的。
  • Rails 控制台可以访问环境变量,而您的脚本可能无法...从脚本中打印出 ENV['SENDGRID_API_KEY']。
  • 谢谢安东,这是正确的! - 如果您想给出描述脚本无法读取 ENV 变量的答案,我会将其标记为答案。
  • 你知道关于 api 的替换限制吗?文档没有说太多,我很难用那个描述来代替。

标签: ruby sendgrid sendgrid-ruby


【解决方案1】:

Rails 控制台加载环境变量,因此当从那里执行代码时,ENV['SENDGRID_API_KEY'] 具有值。
当您在不加载环境的情况下将其作为脚本运行时,结果为零。
根据此处的文档:
https://github.com/sendgrid/sendgrid-ruby#setup-environment-variables
你必须导出这个。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-08
    • 2016-01-05
    • 1970-01-01
    • 2013-03-12
    • 2013-07-29
    • 1970-01-01
    相关资源
    最近更新 更多