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
相关产品推荐
相关产品推荐

