因此,我正在尝试使用名为 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指出的那样,我正在从 shell(bash)运行它,所以这个!
问题现在对我来说很有意义。我将 JSON 字符串移动到一个名为 email.json 的单独文件中,并使用-d @email.json
. 这适用于带有 的简单电子邮件<!DOCTYPE>
,但是当我尝试加载完整的 HTML 时仍然收到以下错误:
{"ErrorCode":402,"Message":"Received invalid JSON input."}
我相信这与其他一些特殊字符有关。当我使用--data-urlencode @email.json
.