【问题标题】:Getting 401 on post request to mailgun api在对 mailgun api 的发布请求中获取 401
【发布时间】:2017-06-03 07:54:39
【问题描述】:

我正在尝试发帖请求以发送电子邮件,这是我的代码:

 url = "https://api.mailgun.net/v3/MYDOMAIN/messages"

    params = {
        :from => "Excited User <manuelbruno05@gmail.com>",
        :to => "bruno.brito.ln@gmail.com, YOU@YOUR_DOMAIN_NAME",
        :subject => "Hello",
        :text => "Testing some Mailgun awesomness!"
    }

    headers = {
        :api => "MY-API-KEY"
    }

    RestClient.post url, params, headers

当我尝试发出请求时,响应为 401 Unauthorized。使用 HttpRequester 发送请求可以正常工作(响应 200),所以我的猜测是我在 Rails 中设置了错误的标题。我的问题:如何修复此代码?

【问题讨论】:

  • MailGun 是否要求您将 IP 或其他东西列入白名单才能发送请求?我假设您是从 HTTPRequester 工作的本地机器上进行此调用的?你确定钥匙是一样的吗?我不明白为什么来自 Ruby 的调用会产生不同的结果。
  • 它不需要ip白名单,我也在本地安装了我的HttpRequester。是的,钥匙是一样的,我仔细检查过。
  • 我发现这个问题似乎与我的问题有关,但我不知道如何解决。 stackoverflow.com/questions/30842841/…
  • 嗯,在我的搜索中,我发现了一个特定于 Mailgun 的 gem,它应该更容易使用; github.com/mailgun/mailgun-ruby 你用密钥实例化一个新类,然后使用它们的方法发送/接收。
  • 我去试试

标签: ruby-on-rails ruby api mailgun rest-client


【解决方案1】:

确保您使用的是从仪表板获得的实际 API 密钥,而不是他们通过电子邮件发送给您的“密钥 ID”。两者不一样!

【讨论】:

  • 这对我有用。
【解决方案2】:

我收到了 401 Forbidden,因为它使用的是美国服务器,而我在欧盟。我必须在MailGun example Go 脚本中添加一行

// Create an instance of the Mailgun Client 
mg:= mailgun.NewMailgun(yourDomain, privateAPIKey)

/// THIS is the line I had to add to get it to use the EU server.
mg.SetAPIBase(mailgun.APIBaseEU)

【讨论】:

  • 对我来说,使用 python,我必须用 https://api.eu.mailgun.net 替换 post url 域(注意 .eu 部分)
【解决方案3】:

我刚刚经历过这种情况,所以我在这里放弃了我的解决方案。您需要将 0.0.0.0/0 添加到 Mailgun 网站上的 IP 白名单。 API 密钥列表的正下方。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-04
    • 2018-01-05
    • 1970-01-01
    • 2018-10-26
    • 1970-01-01
    • 1970-01-01
    • 2018-08-17
    相关资源
    最近更新 更多