我在我的 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。
- 将所有帖子字段分组到有效负载哈希中
- 将单个 header 添加到 header 哈希中
- 告诉 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/