1. ホーム
  2. bash

[解決済み] curl: 引数リストが長すぎる

2022-02-10 04:42:13

質問

Sparkpost APIを利用して、pdfファイルを添付したメールをcurl postで送信したいのですが、可能でしょうか?

pdfを挿入するために、私は次のように使っています(私のtest.pdfは〜200KBです)。

"data":"'$(cat test.pdf} | base64 --wrap=0)'"

しかし、なぜかこれはうまくいかず、次のようなエラーが表示されます。

/usr/bin/curl: Die Argumentliste ist zu lang (original)
/usr/bin/curl: Argument list is too long

EDIT 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":"[email protected]",
            "name":"user"
         }
      }
   ],
   "content":{
      "from":{
         "name":"sender",
         "email":"[email protected]"
      },
      "reply_to":"[email protected]",
      "subject":"subject",
      "text":"textbody",
      "attachments":[
         {
            "name":"attachmentname.pdf",
            "type":"application/pdf",
            "data":"'$(cat test.pdf | base64 --wrap=0)'"
         }
      ]
   }
}'

解決方法は?

これは、base64化されたコンテンツ全体をコマンドラインで渡そうとしているために出てくるものです。 curl には、ファイルからPOSTするデータを読み込む機能があるので、それを行うことをお勧めします。詳しくは マニュアルページ が、基本的な書式はこうです。

curl -X POST -d @filename.txt https://website.com/path