You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

发送远程URL加载的PDF附件失败,附件损坏呈空白页

问题原因及解决方案

核心问题

你用pdfData.text()读取二进制文件内容的方式完全错误——PDF、图片这类二进制数据不能当作字符串解析,text()会把原始字节按UTF-8编码转成文本,直接破坏了文件的二进制结构,导致附件变成空白或损坏状态。

修正后的代码

const pdfData = await fetch(url);
// 读取原始二进制数据,而非文本
const arrayBuffer = await pdfData.arrayBuffer();
// 将二进制数据转为base64编码字符串
const base64Content = Buffer.from(arrayBuffer).toString('base64');

await SendEmail({
    from: 'help@example.com',
    to: email,
    html: '<html>text attachment</html>',
    subject: 'Attachment test',
    attachments: [{
        content: base64Content,
        filename: 'program.pdf',
        type: 'application/pdf',
        encoding: 'base64' // 明确指定编码,多数邮件库需要这个参数识别内容
    }]
})

关键说明

  • 所有二进制类型文件(PDF、图片、压缩包等),都必须用arrayBuffer()获取原始字节数据,避免字符串解析带来的编码损坏
  • 部分邮件发送库需要明确标注encoding: 'base64'才能正确解码附件内容,建议加上这个参数保证兼容性
  • 这套逻辑适用于所有非文本类附件,无需针对不同文件类型修改核心读取逻辑

内容的提问来源于stack exchange,提问作者meds

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 13:50:25