能否用MailComposer转Base64结合Outlook发送邮件Graph API发件?
可以用MailComposer生成的Base64内容实现Outlook发件
完全可以用你现有的MailComposer流程适配Microsoft Graph API发送Outlook邮件——Graph API本身支持直接传入MIME格式的邮件内容,和Gmail API的思路一致,仅在Base64编码处理上有一点差异。
关键差异说明
Gmail API要求URL安全的Base64编码(替换+为-、/为_、移除末尾的=),但Graph API需要标准的Base64编码,不需要做这些字符替换操作。
适配后的代码示例
- 用MailComposer生成MIME邮件内容并转标准Base64
const mailComposer = new MailComposer(mailOptions); const message = await mailComposer.compile().build(); // 直接转标准Base64,无需替换字符 const rawMessage = Buffer.from(message).toString('base64');
- 调用Microsoft Graph API发送邮件
// 假设已通过离线令牌获取到有效的accessToken const res = await fetch('https://graph.microsoft.com/v1.0/me/sendMail', { method: 'POST', headers: { 'Authorization': `Bearer ${accessToken}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ message: { // 将MIME内容传入contentBytes字段 contentBytes: rawMessage }, saveToSentItems: true // 可选:是否保存邮件到已发送文件夹 }) }); if (res.ok) { console.log('邮件发送成功'); } else { const error = await res.json(); console.error('发送失败:', error); }
注意事项
- MailComposer生成的标准MIME格式完全兼容Graph API,mailOptions中的发件人、收件人、抄送、密送、正文、附件等信息都会被正确解析。
- 确保你的应用已申请
Mail.Send权限(根据集成场景选择Delegated或Application权限)。
内容的提问来源于stack exchange,提问作者Jay Patel
相关产品推荐
相关产品推荐

