帮助中心

产品介绍

青鸟商邮是国内专业的邮件发送平台, 为企业提供安全、简单快速、精准高效的营销、通知和事务邮件的推送服务。同时提供了全链路实时跟踪的精准智能数据分析,可直观看到邮件发送的送达率、打开率和点击率等,并且清晰了解投递失败原因,帮助下次提升发信质量。

借助网易20多年的邮件技术积累,我们服务可达全球各地的邮箱地址,邮件到达率远超同行。



快速开始

注册与登录

注册

若你尚未注册,点击此处,正确填写表单并通过激活邮件激活即可。


第一份邮件

系统已经为你准备好了测试的域名和发件地址,上传直邮模板后可直接发送。 完成发送后,可在任务详情中查看发送结果及数据。

由于国家法律法规要求,请测试发送前先完成实名及手机号验证。


免费额度

每个账号均享有250封的免费发送额度,请尽情试用。


正式使用

  1. 正式使用前,请先进行企业认证及购买资源包。
  2. 务必另外创建真实业务使用的域名及发信地址,不要使用系统提供的测试域名及发信地址进行真实业务使用。

日常优化

如何提高发送效率和发送效果,可以参看以下几点:

  • 同一个域名下事务性邮件和营销邮件不要混合发送
  • 发送前对收件列表检查,减少邮箱地址不存在及格式错误
  • 邮件内容不要违规,不要粗制滥造,不要相同邮件内容反复使用


邮件配置

域名

成功注册账户后,系统会自动分配一个测试发信域名。

正式使用前,请务必创建真实业务使用的域名,不要使用系统提供的测试域名进行真实业务业务使用。

创建域名需要完成必要的配置, 才能使用其进行发信。 这些配置项是保证域名能够优质出信的基础。

发信域名的配置包括 SPF、DKIM、DMARC、MX,其中SPF、DKIM、DMARC都为必填项。

  1. 选择 【发送设置】- 【域名】,进入发信域名配置界面。如果没有发信域名,可以新增发信域名,每个账号最多可以创建 2个发信域名。
  2. 点击需要配置的域名,进入配置界面。按照系统给出的配置数据,到你的域名管理系统中做相关配置
  3. 以主域名 sampledomain.com为例添加记录:
    1. SPF验证,假设系统给出配置值为:v=spf1 include:spf.mail-bird.com -all,在域名管理系统中:
      1. 主机记录填入: @
      2. 记录类型选择:TXT
      3. 记录值中填入:v=spf1 include:spf.mail-bird.com -all
      4. 如果您同时使用多个邮件推送服务商,记录值中需要保留多个服务商的域名,例如: v=spf1 include:spf.mail-bird.com include:domain1.com -all ,其中 domain1.com 是其他邮件推送服务商的域名。请确保您发信域名的 DNS 配置中只有1条 SPF 记录。
    2. DKIM验证,假设系统给出配置值为:v=DKIM1;k=rsa;p=M, 在域名管理系统中:
      1. 主机记录填入:mailbird._domainkey
      2. 记录类型选择:TXT
      3. 记录值中填入v=DKIM1;k=rsa;p=M
    3. DMARC验证,假设系统给出配置值为 v=DMARC1; p=none,在域名管理系统中:
      1. 主机记录填入:_dmarc
      2. 记录类型选择:TXT
      3. 记录值填入 v=DMARC1; p=none
    4. MX记录验证:
      1. 记录类型选择:MX
      2. 主机记录填入:ext1.mail-bird.com. 注意末尾需要包含“.“。
      3. 如果已经有企业邮箱服务,不需要改动。

域名配置后有两种状态:

  • 未验证:必配项SPF,DKIM ,DMARC中任一项未通过
  • 已验证:配置项全部验证通过

完成所有记录配置后,域名管理系统上生效可能需要 10-30 分钟

请给事务性邮件和营销性邮件设置不同的域名(拥有不同主域的域名),以避免共享一个发信域名导致两类邮件同时被限制,邮件无法及时送达。

发信地址

发信域名是一封邮件的出处. 在 SMTP 会话过程中, 即是 mail from 的后缀。

  1. 选择邮件配置>发信地址,进入“发信地址” 配置页面,单击新建
  2. 进入新建发信地址配置,请选择您的发信域名,填入邮箱前缀和发件人别名后,单击提交即可完成保存。


邮件发送

  1. 进入邮件发送 ,您可以看到发送任务列表。发送任务列表展示每个发送任务的详细信息,包括发送进度、任务类型、任务状态以及请求数量
  2. 选择邮件发送 ,进入邮件发送配置页面
  3. 选择或导入发件人地址,输入邮件主题,选择发件人,上传对应的邮件模板,确认无误后,单击发送即可将指定的邮件内容发送完成。

邮件变量

邮件中的变量是文本片段,在发送邮件时会自动替换为收件人资料中的信息。
使用变量,您可以批量发送个性化邮件,而无需手动输入个人信息并将邮件单独发送给每个收件人。
例如,您可以在邮件副本中使用 ${first_name}或 ${phone}} 变量一次对整个列表自动进行个性化设置,这样每个收件人都会收到一封包含其个人资料中相关数据的邮件。
以下为使用邮件变量示范:
1. 向邮件模板添加变量
在邮件编辑器中,您可以通过两种方式向邮件内容或标题添加变量。

  1. 从工具栏添加
  • 单击邮件编辑器工具栏上“插入” - “变量”

image.png

  • 输入变量名称,例如name

image.png

  1. 手动输入变量
    您可以手动输入变量或在创建邮件内容时复制粘贴它。
  • 输入变量引用前缀括号 ${
  • 输入变量名
  • 关闭括号}

例如:您可以试试手动输入 ${name}
按照上述操作,正确添加的变量将显示为确认变量有效的图标
image.png
如果命名错误,如包含等非法字符,系统将不会识别为变量而作为邮件普通文本。
2. 向收件人添加变量信息
发送带有变量的邮件时,收件人需通过文件方式导入,导入的文件中必须包含与邮件模板中相应的信息。信息字段名称与变量一致。
如邮件模板中含有 ${name} , ${code}, ${gender} 三个变量,则上传的收件人列表必须 email, name, code, gender 这四列字段,如下所示:

email name code gender
lilei@163.com 李雷 13812345678 先生
wangmeimei@126.com 王美美 15912345689 女士

3. 检查效果并发送
已编辑完成邮件,上传了带变量信息的收件人,可以预览检查各个收件人收到个性化邮件的效果。
image.png
确认无误后即可发送。


特殊变量

退订链接
邮件编辑器中可以插入自定义退订链接。您可自定义取消订阅的链接文案,如:单击此处取消订阅。系统将转化为取消订阅链接。
如需自定义退订链接样式,请将自定义样式的链接设置为${ECS_UNSUB_URL} . 如:

<a href=${ECS_UNSUB_URL}> 单击此处取消订阅</a>

查看全文
部分邮件服务商会屏蔽邮件中图片内容。 为保证用户能看到完整邮件,可以加入查看全文链接,点击可以查看完整全文。
邮件编辑器中可以插入查看全文链接,并支持自定义文案,如:单击此处查看全文。系统将转化为查看全文链接。
如需自定义样式,请将样式的跳转链接设置为${ECS_SHOW_URL},如:

<a href=${ECS_SHOW_URL}>单击此处查看全文</a>


账号设置

修改密码

如需修改密码请联系客服协助修改。


认证

根据 《中华人民共和国网络安全法》 及相关法律的规定,以及按工信部、通信管理局、公安等有关监管单位要求,自定义发送邮件需完成企业信息认证。否则网络运营者停止对其提供相关服务。因此在你正式使用时,需要先完成企业认证。


企业认证可从点击顶部【企业认证】可进入。


用户需完善企业信息、企业邮箱认证与证件资质审核后,购买资源包和配置自定义域名发送邮件。

企业资质审核时,将参考您企业信息中填写的已完成 ICP 备案的网站主页中所公示的企业邮箱进行审核,请认真填写。


认证后,您发送的邮件在网易域内会显示企业认证信息,提升用户对您邮件的信任度,从而提升邮件点击率。


后续如需要修改企业认证信息或更换管理员,请联系客服协助修改。


使用记录

从顶部个人中心-使用记录中查看到所有资源包使用记录


计费规则

平台会在发送任务创建时预扣额度,随后实际按照平台发送成功的邮件扣减额度。 平台成功包括以下状态:

  • 发送成功
  • 投递成功但因对方账号服务器拒绝或容量满拒收
  • 投递成功但由对方服务器认为垃圾邮件

平台失败包含以下状态:

  • 因为平台服务故障导致未能进行信件投递

开具发票

如需开具发票,请联系客服登记开具。

发票统一使用顺丰快递寄送,且不收取费用。


青鸟商邮平台开放接口对接文档

合作方有自己的发信平台的,可购买对应的套餐后对接本文档中的相关接口完成发送

1.接口请求方式

1.1 API地址

https://mkt.mail.163.com/open

1.2 请求结构

接口采用http或https实现交互,参数以form(application/x-www-form-urlencoded)的方式提交,暂不支持JSON、XML格式的参数,数据采用MD5方式加密。

1.3 公共参数

调用每个接口都需要携带的请求参数

变量名 名称 是否必须 说明
userKey 秘钥名称 发信秘钥功能下添加的秘钥名称
signTimestamp 签名时间戳 签名时间
格式采用UTC,时区为Asia/Shanghai
yyyy-MM-dd’T’HH:mm:ss.SSS’Z
如2023-04-25T12:19:27.547Z
请求有效期为服务器与此时间前后2分钟内
sign 签名串 MD5签名;详见签名方法

1.4 签名方法

采用MD5计算签名,userKey和userSecret在平台界面生成,具体计算方法如下:

  1. 假设共有三个参数 a=3、b=2、c=1;(userKey 和 userSecret 不参与运算)

  2. 按参数名的字母正序排列,再用“&”连接后得到串A,即为“a=3&b=2&c=1”;

  3. 将userKey和userSecret拼接到串A后面,假设appId为test,salt为“dAYqFk”,则拼接后为“a=3&b=2&c=1testdAYqFk”;

  4. 计算拼接串的MD5即为最终签名值,注意使用UTF-8编码计算。

举例:

参数:a=3、b=2、c=1;

userKey:test

userSecret: dAYqFk

最终签名串:bf96a4c2efbc75e5692bbc313816e1de

注:value为空的,不参与签名。

  1. JAVA版本示例代码如下:
import org.apache.commons.lang.StringUtils;
import org.springframework.util.DigestUtils;

import java.nio.charset.StandardCharsets;
import java.util.Map;
import java.util.stream.Collectors;

public class SignUtil {

    public static final String KEY_SIGN = "sign";

    public static final String KEY_USER_KEY = "userKey";

    public static final String KEY_USER_SECRET = "userSecret";

    private static final List<String> IGNORE_PARAM = new ArrayList<>(3);
    static {
        IGNORE_PARAM.add(KEY_SIGN);
        IGNORE_PARAM.add(KEY_USER_KEY);
        IGNORE_PARAM.add(KEY_USER_SECRET);
    }

    public static String getSign(String userKey, String userSecret, Map<String,String> paramMap) {
        if (StringUtils.isBlank(userKey)) {
            throw new IllegalArgumentException("user key is blank");
        }
        if (StringUtils.isBlank(userSecret)) {
            throw new IllegalArgumentException("user secret is blank");
        }

        if (paramMap == null || paramMap.isEmpty()) {
            return DigestUtils.md5DigestAsHex( (userKey + userSecret).getBytes(StandardCharsets.UTF_8) );
        }

        String paramString = paramMap.keySet().stream()
                .sorted()
                .filter(i -> !IGNORE_PARAM.contains(i))
                .filter(i -> StringUtils.isNotBlank(paramMap.get(i)))
                .map(i -> i + "=" + paramMap.get(i))
                .collect(Collectors.joining("&"));

        return DigestUtils.md5DigestAsHex( (paramString + userKey + userSecret).getBytes(StandardCharsets.UTF_8) );

    }


    public static void main(String[] args) {
        Map<String,String> param = new HashMap<>();
        param.put("a", "3");
        param.put("b", "2");
        param.put("c", "1");

        System.out.println(param);
        System.out.println(getSign("test", "dAYqFk", param));
    }


}

2.接口定义

2.1 账号相关接口

2.1.1 账号信息

2.1.1.1 简介

获取当前账号的额度

2.1.1.2 URL
GET/POST API地址/account/info
2.1.1.3 请求参数

2.1.1.4 返回结果

返回JSON

{
  "code": 200,
  "desc": "DONE",
  "success": "true",
  "result": {
    "account": "test@163.com",
    "balance": 1000
  }
}

字段说明

字段名 类型 说明
code String 返回码,参考附录
desc String 返回码说明
result.account String 青鸟商邮账号
result.balance Number 剩余发信额度

2.2 域名相关接口

2.2.1 列表查询

查询所有域名的基本信息

2.2.1.1 URL
GET API地址/domain/list
2.2.1.2请求参数

2.2.1.3 返回结果

2.2.1.4 返回值示例

{
    "code": 200,
    "desc": "DONE",
    "success": "false",
    "result": [
        {
            "id": 61,
            "domain": "mail-bird.com",
            "status": 0,
            "total": 0,
            "type": 2
        },
        {
            "id": 66,
            "domain": "mail.abc.com",
            "status": 1,
            "total": 1,
            "type": 2
        }
    ]
}

字段说明

字段名 类型 说明
code Number 返回码,参考附录
desc String 返回码说明
result List<SenderDomain> 返回值

SenderDomain

字段名 类型 说明
id Number 唯一标识符
domain String 域名
status Number 验证状态
0:待验证
1:已验证
total Number 该域名已创建的发信地址数量
type Number 域名类型,用于标识该域名的用途:
1:事务
2:营销

2.3发信地址相关接口

2.3.1 列表查询

查询所有发信地址的基本信息

2.3.1.1 URL
GET API地址/address/list
2.3.1.2 请求参数

2.3.1.3 返回结果

返回值示例

{
    "code": 200,
    "desc": "DONE",
    "success": "false",
    "result": [
        {
            "id": 98,
            "prefix": "mark",
            "alias": "mark",
            "createTime": 1681210992477,
            "updateTime": 1681210992477,
            "domainId": 66,
            "domain": "mail.abc.com",
            "domainStatus": 1
        }
    ]
}

字段说明

字段名 类型 说明
code Number 返回码,参考附录
desc String 返回码说明
result List<SenderAddress> 返回值

SenderAddress

字段名 类型 说明
id Number 发信地址唯一标识符
prefix String 发信地址前缀
alias String 发信地址别名
createTime Number 发信地址创建时间
updateTime Number 发信地址更新时间
domainId Number 对应域名唯一标识符
domain String 域名
domainStatus Number 域名验证状态
0:待验证
1:已验证

2.4 发送相关接口

2.4.1 邮件模板创建

2.4.1.1 简介

创建一个邮件模板,可用于事务性/营销性发送

2.4.1.2 URL
POST API地址/tmpl/create
2.4.1.3 请求参数
变量名 名称 是否必须 说明
sender 发送的sender 邮件sender
senderName 发送的senderName 邮件senderName
title 邮件标题 邮件标题,可包含变量。变量详见3.3
content 邮件内容 邮件内容,可包含变量。变量详见3.3
lang 退订语言 退订语言
replyTo 回复邮箱 收件人可对该邮箱账号进行回复。
summary 邮件摘要 邮件摘要,最多128个字符
adFlag ad标识 为发送邮件主题前增加AD字样,添加AD标识的邮件可能会被邮箱服务商分类进入广告邮件收件箱,防止被拒收。
布尔值,默认为false
attachments 附件 字符串类型,JSON数组的字符串,格式是[{“name”:“附件名称”,“link”:“附件上传返回的link”}],其中name不传则为附件上传时的文件名,最长为50个字符。当前最多上传一个附件
unsubNoticeTmpl 退订提示文案 需与unsubClickTmpl同时不为空,若有退订文案配置,退订文案配置比退订语言优先。
参考: 如果您希望不再收到此类邮件,请点击退订。其中 "如果您希望不再收到此类邮件,请点击"为unsubNoticeTmpl,"退订"为unsubClickTmpl,可点击
unsubClickTmpl 退订点击文案 需与unsubNoticeTmpl同时不为空,若有退订文案配置,退订文案配置比退订语言优先。
参考: 如果您希望不再收到此类邮件,请点击退订。其中 "如果您希望不再收到此类邮件,请点击"为unsubNoticeTmpl,"退订"为unsubClickTmpl,可点击
2.4.1.4 返回结果

返回JSON

{
  "code": 200,
  "desc": "DONE",
  "success": "true",
  "result": {
    "id": 30000001
  }
}

字段说明

字段名 类型 说明
code String 返回码,参考附录
desc String 返回码说明
id Number 邮件模板id

2.4.2 邮件模板更新

2.4.2.1 简介

更新邮件模板

2.4.2.2 URL
POST API地址/tmpl/update/{id}
2.4.2.3 请求参数
变量名 名称 是否必须 说明
id 模板id 模板id,传参在path
sender 发送的sender 邮件sender
senderName 发送的senderName 邮件senderName
title 邮件标题 邮件标题,可包含变量。变量详见3.3
content 邮件内容 邮件内容,可包含变量。变量详见3.3
lang 退订语言 退订语言
replyTo 回复邮箱 收件人可对该邮箱账号进行回复。
summary 邮件摘要 邮件摘要,最多128个字符
adFlag ad标识 为发送邮件主题前增加AD字样,添加AD标识的邮件可能会被邮箱服务商分类进入广告邮件收件箱,防止被拒收。
布尔值,默认为false
attachments 附件 字符串类型,JSON数组的字符串,格式是[{“name”:“附件名称”,“link”:“附件上传返回的link”}],其中name不传则为附件上传时的文件名,最长为50个字符。当前最多上传一个附件
unsubNoticeTmpl 退订提示文案 需与unsubClickTmpl同时不为空,若有退订文案配置,退订文案配置比退订语言优先。
参考: 如果您希望不再收到此类邮件,请点击退订。其中 "如果您希望不再收到此类邮件,请点击"为unsubNoticeTmpl,"退订"为unsubClickTmpl,可点击
unsubClickTmpl 退订点击文案 需与unsubNoticeTmpl同时不为空,若有退订文案配置,退订文案配置比退订语言优先。
参考: 如果您希望不再收到此类邮件,请点击退订。其中 "如果您希望不再收到此类邮件,请点击"为unsubNoticeTmpl,"退订"为unsubClickTmpl,可点击
2.4.2.4 返回结果

返回JSON

{
  "code": 200,
  "desc": "DONE",
  "success": "true"
}

字段说明

字段名 类型 说明
code String 返回码,参考附录
desc String 返回码说明

2.4.3 单播/组播

2.4.3.1 简介

可以针对1~100个以内的用户进行发送

2.4.3.2 URL
POST API地址/send/simple
2.4.3.3 请求参数
变量名 名称 是否必须 说明
tmplId 模板id 模板id
token 幂等key 幂等使用,32字符以内
uid 收件人 多个请用英文逗号隔开,最多支持100个
statisticKey 统计key 查询数据统计使用的key,只能由字母和数字组成
params 变量列表 变量列表,字符串类型。详见3.3
eachParams 变量列表 变量列表,字符串类型。详见3.3
2.4.3.4 返回结果

返回JSON

{
  "code": 200,
  "desc": "DONE",
  "success": "true",
  "result": {
    "sendId": "973192381879062528"
  }
}

字段说明

字段名 类型 说明
code String 返回码,参考附录
desc String 返回码说明
sendId String 发送id,建议进行关联保存,方便排查问题

2.4.4 测试发送

2.4.4.1 简介

测试发送

2.4.4.2 URL
POST API地址/send/test
2.4.4.3 请求参数
变量名 名称 是否必须 说明
sender 发送的sender 邮件sender
senderName 发送的senderName 邮件senderName
title 邮件标题 邮件标题,可包含变量。变量详见3.3
content 邮件内容 邮件内容,可包含变量。变量详见3.3
lang 退订语言 退订语言
uid 收件人 收件人
replyTo 回复邮箱 收件人可对该邮箱账号进行回复。
summary 邮件摘要 邮件摘要,最多128个字符
adFlag ad标识 为发送邮件主题前增加AD字样,添加AD标识的邮件可能会被邮箱服务商分类进入广告邮件收件箱,防止被拒收。
布尔值,默认为false
params 变量列表 变量列表,字符串类型。详见3.3
attachments 附件 字符串类型,JSON数组的字符串,格式是[{“name”:“附件名称”,“link”:“附件上传返回的link”}],其中name不传则为附件上传时的文件名,最长为50个字符。当前最多上传一个附件
unsubNoticeTmpl 退订提示文案 需与unsubClickTmpl同时不为空,若有退订文案配置,退订文案配置比退订语言优先。
参考: 如果您希望不再收到此类邮件,请点击退订。其中 "如果您希望不再收到此类邮件,请点击"为unsubNoticeTmpl,"退订"为unsubClickTmpl,可点击
unsubClickTmpl 退订点击文案 需与unsubNoticeTmpl同时不为空,若有退订文案配置,退订文案配置比退订语言优先。
参考: 如果您希望不再收到此类邮件,请点击退订。其中 "如果您希望不再收到此类邮件,请点击"为unsubNoticeTmpl,"退订"为unsubClickTmpl,可点击
2.4.4.4 返回结果

返回JSON

{
  "code": 200,
  "desc": "DONE",
  "success": "true"
}

字段说明

字段名 类型 说明
code String 返回码,参考附录
desc String 返回码说明

2.4.5 直邮附件上传接口

2.4.5.1 简介

直邮中需要带附件的,请先调用此接口上传获取link地址,
ps:此接口请使用Content-Type: form-data,公共参数带在url

2.4.5.2 URL
POST API地址/tmpl/attachment/upload
2.4.5.3 请求参数
变量名 名称 是否必须 说明
file 文件 文件
fileName 自定义的文件名 选传,若不传默认是文件名
contentType 指定MIME类型 选传,不传默认从文件识别
md5 md5 md5值
2.4.5.4 返回结果

返回JSON

{
  "code": 200,
  "desc": "DONE",
  "success": "true",
  "result": {
    "link": "xxxxxx"
  }
}

字段说明

字段名 类型 说明
code String 返回码,参考附录
desc String 返回码说明
link String 附件link

2.5 数据统计相关接口

2.5.1 数据详情

2.5.1.1 简介

获取任务/指定统计key 下的发送、到达、打开、点击、退订 数据

2.5.1.2 URL
GET/POST API地址/statistic/data
2.5.1.3 请求参数
变量名 名称 是否必须 说明
statisticKey 统计key 统计key,只能由字母和数字组成
startTime 统计开始时间 毫秒时间戳, 与结束时间差值小于等于30天
endTime 统计结束时间 毫秒时间戳, 与开始时间差值小于等于30天
2.5.1.4 返回结果

返回JSON

{
  "code": 200,
  "desc": "DONE",
  "success": "true",
  "result": {
    "successCnt": 1,
    "failureCnt": 0,
    "openPv": 1,
    "openUv": 1,
    "clickPv": 0,
    "clickUv": 0,
    "unsubCnt": 0,
    "sentCnt": 0,
    "realSentCnt": 0,
    "resultDetail": {
      "201": 100,
      "202": 300
    }
  }
}

字段说明

字段名 类型 说明
code String 返回码,参考附录
desc String 返回码说明
successCnt Number 发送成功数
failureCnt Number 发送失败数
openPv Number 打开pv
openUv Number 打开uv
clickPv Number 点击pv
clickUv Number 点击uv
unsubCnt Number 退订数量
sentCnt Number 预计发送数量
realSentCnt Number 实际发送数量(去掉退订的账号)
resultDetail Map<String, Number> 失败分类数据,参考附录3.2

2.5.2 数据明细下载

2.5.2.1 简介

获取指定统计key 下的发送、到达、打开、点击、退订 明细

2.5.2.2 URL
GET/POST API地址/statistic/download/detail
2.5.2.3 请求参数
变量名 名称 是否必须 说明
statisticKey 统计key 统计key,只能由字母和数字组成
startTime 统计开始时间 毫秒时间戳, 与结束时间差值小于等于30天
endTime 统计结束时间 毫秒时间戳, 与开始时间差值小于等于30天
2.5.2.4 返回结果

返回excel二进制流,文件名为:明细查询结果_yyyyMMdd_HHmmss.xlsx,可直接进行下载

Content-Type: application/x-msdownload

2.6 发送拦截相关接口

2.6.1 列表查询

查询主动拦截/客户退订相关信息

2.6.1.1 URL
GET API地址/intercept/list
2.6.1.2 请求参数
变量名 名称 说明 默认值
page 页码 页码;由1开始 1
pageSize 每页数量 每页数量;范围1~100 10
type 类型 类型:
1. 主动添加类型
2. 客户退订类型
1
2.6.1.3 返回结果

返回值示例

{
    "code": 200,
    "desc": "DONE",
    "success": "false",
    "result": {
        "list": [
            {
                "id": 4,
                "email": "aaa@163.com",
                "sender": "mark@mail.abc.com",
                "senderId": 98,
                "type": 1,
                "updateTime": 1683298798475,
                "interceptAll": false
            },
            {
                "id": 2,
                "email": "a@163.com",
                "sender": "@",
                "senderId": 0,
                "type": 1,
                "updateTime": 1683269918051,
                "interceptAll": true
            }
        ],
        "total": 2
    }
}

字段说明

字段名 类型 说明
code Number 返回码,参考附录
desc String 返回码说明
result.list SenderIntercept 拦截信息
result.total Number 数量

SenderIntercept

字段名 类型 说明
id Number 拦截信息唯一ID(仅type=1时有)
email String 收信地址
sender String 发信地址
senderId Number 对应发信地址ID(仅type=1时有)
type Number 类型:
1. 主动添加
2. 客户退订
updateTime Number 更新时间
interceptAll Boolean 是否拦截所有发信地址

3. 附录

3.1 返回码定义

返回码code 描述 备注
200 请求成功
202 参数异常 详细原因请看desc字段
203 拒绝访问 非法行为
207 内部错误,不建议重试 请联系客服处理
208 服务暂时不可用,建议重试几次 重试无效后建议联系客服处理
209 userKey参数异常 没传或者userKey不存在
210 签名异常 签名不存在或者不正确
211 时间戳异常 时间戳不存在或者时间不正常
5004 垃圾文件 垃圾文件
5005 附件上传次数达到限制 附件上传次数达到限制
6001 余额不足 发送余额不足
6003 内容非法 内容非法
6006 测试发送数量限制 测试发送数量达到上限

3.2 发送失败分类定义

code 描述 备注
200 发送成功
201 对方账户无效
202 对方拒收
203 对方邮箱已满
204 超过发送上限
205 判为垃圾邮件
501 收件人地址不存在或被停用
502 发信IP,域名或账号被加黑
503 发信配置校验失败
504 被收信服务器判为垃圾邮件
505 被收信服务器判为病毒邮件
506 邮箱账号格式不规范
507 发信频率超过收信服务器限制
508 收信服务器临时故障/繁忙
509 收件人个数超过限制
510 邮件过大
511 因附件被拒收
512 收件人邮箱空间满
999 其他

3.3 变量说明

变量渲染,支持常见的特性,例如循环、条件语句,详见下面说明

3.3.1邮件模板中如何添加变量?

变量采用占位符方式,格式为${变量名},例如 尊敬的${uid}

3.3.2 下发时传递的变量params

params为JSON数组的字符串,其中每个JSON OBJECT如下

{
  "key": "变量名",
  "value": "变量值",
  "json": false
}

其中key和value都是严格的字符串类型

若要传递复杂对象,请传递JSON OBJECT的字符串在value,并将json标记置为true

注:json为true时value只能是JSON OBJECT的字符串类型

参考:

[
  {
    "key": "变量名",
    "value": "变量值",
    "json": false
  },
  {
    "key": "变量名",
    "value": "{\"a\":1}",
    "json": true
  }
]

3.3.3 下发时传递的变量eachParams

为params的数组

如果收件人大于一个,并且每个收件人对应的变量不一致,则使用此参数

如果每个收件人的变量一致,则使用params参数

数组大小需与收件人列表大小一致

参考:

[
  [
    {
      "key": "变量名",
      "value": "变量值",
      "json": false
    },
    {
      "key": "变量名",
      "value": "变量值",
      "json": false
    }
  ],
  [
    {
      "key": "变量名",
      "value": "变量值",
      "json": false
    },
    {
      "key": "变量名",
      "value": "变量值",
      "json": false
    }
  ]
]

3.3.4 条件语句

#if($condition)
    // 条件成立时执行的代码
#else
    // 条件不成立时执行的代码
#end

3.3.5 循环语句

#foreach($item in $test.list)
    // 遍历$list中的元素$item,执行的代码
#end

其中的传参例子为:

{
  "key": "test",
  "value": "{\"list\":[1,2,3]}",
  "json": true
}