ruby-on-rails - RestClient mailgun 错误 "message": "' from' parameter is missing"

标签 ruby-on-rails curl rest-client mailgun

我在我的 Rails 应用程序中使用 RestClient 来发送电子邮件。 以下 Curl 命令有效:

    curl -s "https://api:key-XYZ@api.mailgun.net/v2/sandbox30000.mailgun.org/messages" \
    -F from='Mailgun Sandbox <postmaster@sandbox30000.mailgun.org>' \
    -F to='me <my-email-id@gmail.com>'\
    -F subject='Hello XYZ' \
    -F text='Congratulations, you just sent an email with Mailgun!  You are truly awesome!'

但是当我使用 RestClient 尝试相同的操作时,我收到以下错误消息:

    error response !!{
      "message": "'from' parameter is missing"
    }

错误信息!!400 错误请求

RestClient 调用:

    RestClient::Request.execute(
    :url => "https://api:key-XYZ@api.mailgun.net/v2/sandbox0000.mailgun.org/messages",
    :method => :post,
    :from => 'Mailgun Sandbox <postmaster@sandbox30000.mailgun.org>',
    :sender => 'Mailgun Sandbox <postmaster@sandbox30000.mailgun.org>',
    :to => "my-email-id@gmail.com",
    :subject => "Hello XYZ",
    :text => "Text body",
    :"h:X-My-Header" => "www/mailgun-email-send",
    :verify_ssl => false)

最佳答案

当您使用带有多个负载参数和 header 的 Request.execute 时,您需要告诉 RestClient 它是什么类型的数据。

您需要这三个修复程序才能获得与 RestClient 等效的 curl-request。

  1. 将所有帖子字段分组到有效负载哈希中
  2. 将单个 header 添加到 header 哈希中
  3. 告诉 RestClient 负载应该作为多部分发送。

更改后的请求:

RestClient::Request.execute(
  :url => "https://api:key-XYZ@api.mailgun.net/v2/sandbox0000.mailgun.org/messages",
  :method => :post,
  :payload => {
    :from => 'Mailgun Sandbox <postmaster@sandbox30000.mailgun.org>',
    :sender => 'Mailgun Sandbox <postmaster@sandbox30000.mailgun.org>',
    :to => "my-email-id@gmail.com",
    :subject => "Hello XYZ",
    :text => "Text body",
    :multipart => true
  },
  :headers => {
    :"h:X-My-Header" => "www/mailgun-email-send"
  },
  :verify_ssl => false
)

关于ruby-on-rails - RestClient mailgun 错误 "message": "' from' parameter is missing",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24881012/

相关文章:

javascript - Rails 搜索栏不工作

ruby - 在 Mac OS X 上安装 Homebrew 无法连接到 raw.githubusercontent.com 端口 443

java - 如何为外部世界 REST 服务创建 REST 客户端

mysql - 使用 CURL 和 shell 脚本验证 mysql 数据库中 URL 的状态

php - 如何在 php-Codeigniter 中向 RESTserver api 发送发布请求?

codeigniter - 如何向 Phil Sturgeon 的 CodeIgniter RestServer 发送 POST 请求

ruby-on-rails - 使用单元测试、Rspec、Cucumber 和 Capybara 是否有意义?

ruby-on-rails - 根据内部数据计数过滤结果

ruby-on-rails - Rails : add namespace to resource

PHP:Curl 无法抓取我自己网站上的纯文本页面