
2024年在线市场平台的11大最佳支付解决方案
通过 Postmark 发送单封电子邮件非常简单,只需向我们的 /email 端点发送 HTTP POST 请求并将 JSON 消息 附加到正文即可。
curl "https://api.postmarkapp.com/email" \
-X POST \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "X-Postmark-Server-Token: server token" \
-d '{
"From": "sender@example.com",
"To": "receiver@example.com",
"Subject": "Postmark test",
"TextBody": "Hello dear Postmark user.",
"HtmlBody": "<html><body><strong>Hello</strong> dear Postmark user.</body></html>",
"MessageStream": "outbound"
}'
为了向服务验证您的身份,您需要使用 X-Postmark-Server-Token
标头进行身份验证和授权。每个 Postmark 服务器都有自己的 API 令牌,允许您隔离连接到 Postmark 的每个应用程序的访问和数据。
标头名称和值不区分大小写。如果您执行的请求包含错误或缺失的标头,您将收到 HTTP 响应 401(未授权)。
为了测试目的,Postmark 允许您发送测试电子邮件,但这些电子邮件实际上不会发送给收件人。此方法通常用于验证您的数据是否有效。您可以通过传递 POSTMARK_API_TEST
服务器 API 令牌来执行此操作。
X-Postmark-Server-Token: server token
JSON 消息在 HTTP POST 请求的正文中传递。 From
和 To
字段能够接受名称,格式为 John Doe <email@example.com>
。您可以提供 HtmlBody
HTML 格式的消息、 TextBody
纯文本,或为多部分提供两者。多部分发送带有文本版本的 HTML,供不支持 HTML 的客户端使用。传递标头是可选的。
Name
通过 API 覆盖发件人签名中的 。如果您想在电子邮件中使用会员信息,同时保留您的 From
电子邮件地址,这将非常有用。只需将姓名传递到 From
字段 即可"From": "John Smith <sender@example.com>"
。这也适用于To
、Cc
和Bcc
字段。 To
您可以在、 Cc
和 字段中传递多个收件人地址 Bcc
。多个地址以逗号分隔,每封邮件最多可容纳 50 个收件人。这意味着所有收件人(To
、 Cc
和 Bcc
)合计不得超过 50 个。Tag
属性对发送的电子邮件进行分类。这样您就可以获得所有标记的电子邮件的详细统计信息。每封邮件只能使用一个标签。标签的最大大小为 1000 个字符。Metadata
。"To" : "\"Joe Receiver, Jr.\" <receiver@example.com>"
"Headers": [{"Name":"Message-ID", "Value": "<my-id-123@example.com>"}]
{
"From": "sender@example.com",
"To": "receiver@example.com",
"Cc": "copied@example.com",
"Bcc": "blank-copied@example.com",
"Subject": "Test",
"Tag": "Invitation",
"HtmlBody": "<b>Hello</b>",
"TextBody": "Hello",
"ReplyTo": "reply@example.com",
"Metadata": {
"Color":"blue",
"Client-Id":"12345"
},
"Headers": [
{
"Name": "CUSTOM-HEADER",
"Value": "value"
}
],
"TrackOpens": true,
"TrackLinks": "HtmlOnly",
"MessageStream": "outbound"
}
您可以使用三种方式激活电子邮件的打开跟踪:
{
...
"TrackOpens" : true
}
您可以启用链接跟踪来获取收件人在电子邮件中点击的链接的信息。可以按每条消息或每台服务器启用链接跟踪。
了解有关链接跟踪的更多信息。
{
...
"TrackLinks" : "HtmlAndText"
}
附件在 JSON 消息的数组中指定 Attachments
。然后可以将各个附件作为单独的对象存储在该数组中。
此 Name
字段是将显示给邮件收件人的实际文件名。为了消除传播病毒或间谍软件的可能性,我们不允许某些文件类型:
该 ContentType
字段是电子邮件客户端用来解释附件的 MIME 内容类型。
该 Content
字段存储文件的二进制数据,必须以 base64 编码的字符串形式传输。大多数编程语言和库都内置了此功能,例如 Java、 .NET、 PHP、 Ruby
限制:
TextBody
。 HtmlBody
{
...
"Attachments": [
{
"Name": "readme.txt",
"Content": "dGVzdCBjb250ZW50",
"ContentType": "text/plain"
},
{
"Name": "report.pdf",
"Content": "dGVzdCBjb250ZW50",
"ContentType": "application/octet-stream"
}
]
}
Postmark 还允许您通过 HTML 消息发送内嵌图像。图像必须采用 base64 编码,并且字段 ContentID
必须与图像的 CID 匹配。
只要 CID 标签匹配,Postmark 就会自动将图像嵌入到 HTML 中。 注意: 如果您在消息中多次引用附加图像,则只需附加一次图像。Postmark 将按照 HTML 标记中引用图像的频率使用该图像。这将节省带宽,避免附件大小限制。
{
...
"Attachments": [
{
"Name": "bacon.jpg",
"Content": "/9j/4AAQSkZJRgABAgEAAAAAAAD/4",
"ContentType": "image/jpeg",
"ContentID": "cid:part1.01030607.06070005@gmail.com"
}
]
}
<img src="cid:part1.01030607.06070005@gmail.com">
如果一切顺利,您将收到一条类似示例的 JSON 消息。
该 MessageID
字段可用于登录您的系统。然后,它可用于将您发送的消息与您从退回 webhook 或退回 API 获得的可能退回相关联。
查看API 错误的完整列表 以了解更多详细信息。
{
"ErrorCode": 0,
"Message": "OK",
"MessageID": "b7bc2f4a-e38e-4336-af7d-e6c392c2f817",
"SubmittedAt": "2010-11-26T12:01:05.1794748-05:00",
"To": "receiver@example.com"
}
Postmark 不以任何方式托管附件,因此无法通过 Postmark UI、API 或 webhook 检索附件。
POST
我们理解,处理量较大或处理时间受限的开发人员需要批量发送消息。为了方便使用,我们提供了一个批处理端点,允许您在单个 API 调用中发送最多 500 条格式正确的 Postmark 消息。如果您使用批量调用发送广播(批量)消息,请使用 MessageStream 字段设置您的发送流。
请注意,批处理端点每个 API 调用最多接受 500 条消息,有效负载大小最多为 50 MB(包括附件)。
批量消息的格式为包含多个消息请求的JSON数组,
批量请求示例可参见此处。
curl "https://api.postmarkapp.com/email/batch" \
-X POST \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "X-Postmark-Server-Token: server token" \
-d '[{
"From": "sender@example.com",
"To": "receiver1@example.com",
"Subject": "Postmark test #1",
"TextBody": "Hello dear Postmark user.",
"HtmlBody": "<html><body><strong>Hello</strong> dear Postmark user.</body></html>",
"MessageStream": "outbound"
},
{
"From": "sender@example.com",
"To": "receiver2@example.com",
"Subject": "Postmark test #2",
"TextBody": "Hello dear Postmark user.",
"HtmlBody": "<html><body><strong>Hello</strong> dear Postmark user.</body></html>",
"MessageStream": "outbound"
}
]'
类似地,您将收到一个匹配的 JSON 数组,其中包含您在批量调用中发送的每个消息的响应。
查看API 错误的完整列表 以了解更多详细信息。