Javascript 使用axios post请求向mailgun API发送电子邮件

Javascript 使用axios post请求向mailgun API发送电子邮件,javascript,email,axios,mailgun,Javascript,Email,Axios,Mailgun,我一直在试图发送一封电子邮件使用post请求没有运气。我一直收到一个401(未经授权)错误。 这是我的密码: axios.post('https://api.mailgun.net/v3/MY-DOMAIN/messages', { data: new URLSearchParams({ from: 'from', to: 'to', subject: 'subject', html: 'html' }), auth:

我一直在试图发送一封电子邮件使用post请求没有运气。我一直收到一个401(未经授权)错误。 这是我的密码:

  axios.post('https://api.mailgun.net/v3/MY-DOMAIN/messages', {
    data: new URLSearchParams({
      from: 'from',
      to: 'to',
      subject: 'subject',
      html: 'html'
    }),
    auth: {
      username: 'api',
      password: 'MY-API-KEY'
    },
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded'
    }
  }).then(function (response) {
    console.log(response.data)
  }).catch(function (error) {
    console.log(error.response)
  })
我一直在使用axios向其他API发送post请求。 有什么想法吗? 谢谢

编辑: 这是我用来创建消息的mailgun.js方法(这很有效),但我无法发送附件

  var mg = mailgun.client({username: 'api', key: 'MY-API-KEY'})

  mg.messages.create('MY-DOMAIN', payload).then(msg => console.log(msg)) // logs response data
  .catch(err => console.log(err)) // logs any error
编辑2:邮枪响应


不幸的是,在使用Javascript进行身份验证和访问控制允许标头时会遇到问题。您可能会发现身份验证(我们需要)将无法与访问控制允许头一起工作。我们这样做是为了禁止从前端应用程序发送消息,因为在许多情况下,用户会硬编码其API密钥,从而将其身份验证信息公开给Internet。

有两个问题。。。您正在使用成为查询参数的
params
发送数据,但Mailgun需要
应用程序/x-www-form-urlencoded
请求正文。默认情况下,Axios以JSON.FYI的形式发送数据,而不是
params
,请尝试
data:new-urlsearchparms({from,to,subject,html})
我已修改代码以使用数据并将内容类型添加到标题中,但仍然遇到相同的错误<代码>数据:新的URLSearchParams({from:payload.from,to:payload.to,subject:payload.subject,html:payload.html}),标题:{'Content Type':'application/x-www-form-urlencoded'}那么您的凭证可能不正确。你能在任何地方验证它们吗?另外,请更新问题中的代码。它们与我使用mailgun.js库创建邮件时使用的凭据相同,但我无法以这种方式发送附件。我现在正在使用axios,希望能解决这个问题。我已经更新了mailgun.js库方法以供参考。