WhatsApp Business API发送PDF报12300错误及本地PDF发送问题咨询
问题排查与解决方案
12300 - Invalid Content-Type 报错原因排查
- 你当前填入的Google Drive链接为文件预览页链接,并非PDF资源直链,Twilio拉取该地址时返回的
Content-Type为text/html,不符合WhatsApp API要求的application/pdf类型,直接触发校验报错。 - 若你已使用直链格式仍报错,请检查Google Drive文件权限是否设置为「所有获取到链接的用户可查看」,权限不足时拉取请求会跳转至权限验证页面,同样返回html内容导致类型不匹配。
- 校验方法:将你填写的mediaUrl复制到浏览器无痕窗口打开,若直接触发PDF下载/在线预览则符合要求,若跳转至Google Drive登录、分享页则为无效链接。
MediaUrl传入本地PDF与Twilio Assets配置方法
注意:MediaUrl必须为公网可无鉴权直接访问的资源直链,本地文件路径(如C:\files\test.pdf)无法被Twilio服务器访问,不能直接填入
Twilio Assets配置失败常见原因
- 上传的PDF资源权限设置为「私有」,Twilio API无法无鉴权拉取资源,需将资源权限修改为「公开」,复制获取到的公开直链填入即可。
- 资源直链无明确
.pdf后缀,导致Twilio识别Content-Type错误,需确保直链后缀为.pdf,若为接口形式需在响应头中显式指定Content-Type: application/pdf。
本地PDF传入方案
- 将本地PDF上传至公网可匿名访问的对象存储、静态资源服务器,设置允许跨域与匿名访问,获取资源直链后填入MediaUrl。
- 在本地服务中新增静态资源路由,将本地PDF所在目录暴露为公网可访问的GET路径,响应头显式设置
Content-Type: application/pdf,将该公网路径填入MediaUrl。
修正后代码示例
static void Main(string[] args) { var accountSid = "你的Twilio账户SID"; var authToken = "你的Twilio授权Token"; TwilioClient.Init(accountSid, authToken); ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; // 替换为符合要求的PDF公网直链:Google Drive直链/公开Twilio Assets链接/自有服务静态资源直链 var mediaUrl = new[] { new Uri("替换为有效PDF公网直链") }.ToList(); var messageOptions = new CreateMessageOptions( new PhoneNumber("whatsapp:+91XXXXXX")); messageOptions.From = new PhoneNumber("whatsapp:+XXXXXXXX"); messageOptions.Body = "Hello how are you?"; messageOptions.MediaUrl = mediaUrl; var message = MessageResource.Create(messageOptions); Console.WriteLine(message.Body); Console.ReadLine(); }
内容的提问来源于stack exchange,提问作者DISHA MURALI
相关产品推荐
相关产品推荐

