Ghost 5.2.2调用Admin API发定时文章无法触发newsletter邮件发送
问题根因
Ghost 5.2.2版本存在场景适配差异:URL查询字符串携带的?newsletter={{newsletter-slug}}配置,仅对status=publish的即时发布场景生效。你当前使用的是定时发布(status=scheduled),这类请求的执行逻辑是先将文章作为定时任务存入数据库,到设定的published_at时间才会触发实际发布动作,URL上传递的newsletter参数不会被持久化到文章元数据中,到点发布时系统读取不到发信关联配置,自然不会触发newsletter邮件推送。
遗漏配置与解决方法
你当前的请求仅在URL中传递了newsletter参数,没有在请求体中携带可持久化的发信配置,按以下步骤调整即可:
- 获取目标newsletter的实际ID
调用自身站点Admin API的/ghost/api/admin/newsletters/接口,拿到全量newsletter列表,找到slug为default-newsletter对应的id字段值——定时发信场景不识别slug传值,必须传对应ID。 - 修改POST请求的Body内容,在文章对象中新增两个必填字段:
newsletter_id: 上一步拿到的目标newsletter IDsend_email_when_published: 固定设为布尔值true,显式标记文章发布时触发邮件推送
- 修正后的完整请求参考如下:
- 请求URL:
{{website-url}}/ghost/api/admin/posts/?newsletter=default-newsletter&source=html(URL上的原有参数可以保留,兼容即时发布逻辑,不影响定时场景运行) - 请求方法:
POST - 请求头:
Content-Type: application/jsonAuthorization: Ghost {{token}}
- 请求Body:
{ "posts": [ { "title": "Title", "status": "scheduled", "html": "Content", "published_at": "2022-06-15T20:07:00.000Z", "newsletter_id": "替换为实际获取到的default-newsletter对应ID", "send_email_when_published": true } ] } - 请求URL:
额外排查项
如果调整配置后仍无法发信,做两项基础检查:
- 进入Ghost后台的邮件订阅设置页,确认
default-newsletter处于启用状态 - 在后台邮件配置页发送测试邮件,确认站点本身的邮件发信服务配置正常,无投递故障
内容的提问来源于stack exchange,提问作者Josh Moore
相关产品推荐
相关产品推荐

