Javascript 使用axios post请求向mailgun API发送电子邮件
我一直在试图发送一封电子邮件使用post请求没有运气。我一直收到一个401(未经授权)错误。 这是我的密码: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:
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库方法以供参考。