curl: список аргументов слишком длинный
Я хочу отправить письмо с прикрепленным pdf-файлом через API Sparkpost с сообщением curl.
Чтобы вставить PDF-файл, который я использую (мой файл test.pdf составляет ~ 200 КБ)
"data":"'$(cat test.pdf} | base64 --wrap=0)'"
Но почему-то это не сработает, показывая следующую ошибку:
/usr/bin/curl: Die Argumentliste ist zu lang (original)
/usr/bin/curl: Argument list is too long
РЕДАКТИРОВАТЬ: команда curl
curl -X POST https://api.eu.sparkpost.com/api/v1/transmissions -H 'Authorization: <APIKEY>' -H 'Content-Type: application/json' -d '{
"options":{
"open_tracking":false,
"click_tracking":false,
"inline_css":false
},
"recipients":[
{
"address":{
"email":"user@domain.tld",
"name":"user"
}
}
],
"content":{
"from":{
"name":"sender",
"email":"sender@domain.tld"
},
"reply_to":"replyto@domain.tld",
"subject":"subject",
"text":"textbody",
"attachments":[
{
"name":"attachmentname.pdf",
"type":"application/pdf",
"data":"'$(cat test.pdf | base64 --wrap=0)'"
}
]
}
}'
1 ответ
Решение
Это происходит потому, что вы пытаетесь передать весь контент base64 в командной строке. curl
имеет возможность загружать данные в POST из файла, что я бы порекомендовал сделать. Дополнительную информацию можно найти на странице руководства, но основной формат таков:
curl -X POST -d @filename.txt https://website.com/path
Согласно руководству по curl, опция -F позволяет вам кодировать файл для base64, но ограничивает вывод до 76 символов. Пример: -F '=@localfile;encoder=base64'