2

そこで、Postmark というサービスを使用して、書式設定された HTML メールを送信しようとしています。彼らはここにいくつかの API ドキュメントを持っており、CURL の使用方法について次の例を示しています。

$: curl -X POST "http://api.postmarkapp.com/email" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "X-Postmark-Server-Token: ed742D75-5a45-49b6-a0a1-5b9ec3dc9e5d" \
-v \
-d "{From: 'sender@example.com', To: 'receiver@example.com', Subject: 'Postmark test', HtmlBody: '<html><body><strong>Hello</strong> dear Postmark user.</body></html>'}"

それで、それはすべて良いことであり、私が自分のトークンを使用するときはうまく機能します。問題は、独自の HtmlBody を追加するときです。簡単なメッセージを送信すると、問題なく動作します。特定の特殊文字を追加するとすぐに壊れます。たとえば、次のようなことをするとします。

-d "{From: 'sender@example.com', To: 'receiver@example.com', Subject: 'Postmark test', HtmlBody: '<!DOCTYPE html><html><body><strong>Hello</strong> dear Postmark user.</body></html>'}"

のせいで壊れ!ます。どうすればこれを修正できますか?


更新: sourcejediが指摘したように、私はこれをシェル (bash) から実行しているため、この!問題は今では理解できます。JSON 文字列を email.json という別のファイルに移動し、-d @email.json. を含む単純な電子メールでは機能しました<!DOCTYPE>が、完全な HTML を読み込もうとすると、まだ次のエラーが表示されます。

{"ErrorCode":402,"Message":"Received invalid JSON input."}

これは他の特殊文字と関係があると思います。を使用すると同じエラーが発生します--data-urlencode @email.json

4

3 に答える 3

3

を使用する必要があるため--data-urlencode、次のようにする必要がありますcurl -X POST --data-urlencode

私が自分の側でテストしたとき..

* About to connect() to api.postmarkapp.com port 80 (#0)
*   Trying 50.56.54.211... connected
> POST /email HTTP/1.1
> User-Agent: curl/7.23.1 (x86_64-pc-win32) libcurl/7.23.1 OpenSSL/0.9.8r zlib/1
.2.5
> Host: api.postmarkapp.com
> Accept: application/json
> Content-Type: application/json
> X-Postmark-Server-Token: ed742D75-5a45-49b6-a0a1-5b9ec3dc9e5d
> Content-Length: 164
于 2012-08-28T18:42:36.837 に答える
2

まだ私に壊れているようです: -bash: !DOCTYPE: event not found

これは、bash シェルからのエラーです。! をエスケープする必要があります。なので \!あなた自身。しかし、ファイルから読み取るほうがよいと思います。-d data使用する代わりに-d @datafile。(または-d @-標準入力から読み取る)。

于 2012-08-28T19:08:54.020 に答える