我正在使用MailJet的SMS API,但在正确设置令牌/身份验证语法方面遇到困难。
在cURL中,请求应类似于(cf Docs):
curl -s \
-X POST \
--user "$MJ_APIKEY_PUBLIC:$MJ_APIKEY_PRIVATE" \
https://api.mailjet.com/v4/sms-send \
-H 'Content-Type: application/json' \
-d '{
"From": "MJPilot",
"To": "+33600000000",
"Text": "Have a nice SMS flight with Mailjet!"
}'
但是我不知道如何将该短语转换为Python,这是我目前的想法:
import requests, json
headers = {
'Authorization': 'Bearer ' + 'MYTOKEN',
'Content-Type': 'application/json',
}
tel='XXXX'
message = "this is a message"
payload= {"From":"Me", "To":tel, "message":message}
r_sms = requests.post("https://api.mailjet.com/v4/sms-send", data=payload, headers=headers)
print("SMS SENT" + str(r_sms.json()))
,具有以下响应:
SMS SENT{'ErrorIdentifier': 'f403ce05-1db3-4c30-ac74-314fa93a9e84', 'ErrorCode': 'mj-0002', 'ErrorMessage': 'Malformed JSON, please review the syntax and properties types.', 'StatusCode': 400}
我知道我的令牌有效,因为我可以通过邮递员正确运行请求
答案 0 :(得分:1)
您的有效载荷为json
,因此kwarg为json
,而不是data
:
r_sms = requests.post("https://api.mailjet.com/v4/sms-send", json=payload, headers=headers)
此外,在您的有效载荷中,看起来应该是"Text"
而不是"message"