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

Node.js环境下使用mailgun.js添加base64编码附件的问题咨询

实现方案

你需要将base64编码的字符串先转换为Node.js Buffer后再传入attachment配置,修正后的代码如下:

const formData = require('form-data');
const Mailgun = require('mailgun.js');
const mg = new Mailgun(formData);
const mailgunClient = mg.client({username: 'api', key: process.env.MAILGUN_API_KEY});

// 处理base64字符串,移除可选的Data URI前缀(如data:image/jpeg;base64,)
const rawBase64 = "你的Base64编码内容";
const cleanedBase64 = rawBase64.replace(/^data:.+;base64,/, '');
// 将base64转换为二进制Buffer
const attachmentContent = Buffer.from(cleanedBase64, 'base64');

mailgunClient.messages.create(process.env.MAILGUN_DOMAIN, {
    from: process.env.MAIL_FROM_ADDRESS,
    to: [message.recipients],
    subject: message.subject,
    text: "测试Mailgun功能",
    html: "<h1>测试Mailgun功能</h1>",
    attachment:[
        {
            filename: 'attachment.jpg',
            data: attachmentContent
            // 可选:手动指定MIME类型,不填则会自动根据文件名后缀识别
            // contentType: 'image/jpeg'
        }
      ]
  })

注意事项

  • 旧版mailgun-js的attachment配置字段和新版mailgun.js不通用,新版不需要传encoding参数,二进制内容直接赋值给data字段即可
  • 如果附件是其他格式(如PDF、Excel),仅需修改filename的后缀名即可,无需调整Buffer转换逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 04:45:02