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

私有VLAN内后端服务器使用OAuth对接Office 365发送邮件问题咨询

方案可行性确认

这个方案完全可落地,私有VLAN部署不影响认证流程:OAuth认证只需要你的后端服务器能主动出站访问微软Azure AD的身份接口、Office 365 SMTP服务(smtp.office365.com 587端口)即可,不需要公网能主动访问你的后端服务,只要你的VLAN配置了出站NAT或者代理允许上述访问即可。

第一步:Azure AD 应用配置

你需要先在Azure AD中注册一个供后端服务使用的服务主体:

  • 进入Azure Active Directory面板,新建应用注册,应用类型选无用户交互的服务端应用
  • 注册完成后保存客户端ID、租户ID两个参数
  • 进入「证书和密码」页面,新建一个客户端密码,保存密码值(仅生成时可见,丢失需要重新生成)
  • 进入「API权限」页面,添加Microsoft Graph的应用程序权限,勾选SMTP.SendAsApp权限,提交后点击「授予管理员同意」完成权限激活
  • 运行Exchange Online PowerShell命令,给你的发件邮箱授予应用访问权限:
    Add-MailboxPermission -Identity "你的发件邮箱地址" -User "刚才的客户端ID" -AccessRights FullAccess -InheritanceType All
第二步:Node 后端代码实现

推荐使用nodemailer实现SMTP发送,搭配@azure/msal-node实现OAuth令牌获取:

  1. 安装依赖
    npm install nodemailer @azure/msal-node
  2. 核心实现示例
const msal = require('@azure/msal-node');
const nodemailer = require('nodemailer');

// MSAL 配置
const msalConfig = {
  auth: {
    clientId: "你之前保存的客户端ID",
    authority: "https://login.microsoftonline.com/你之前保存的租户ID",
    clientSecret: "你之前保存的客户端密码"
  }
};

const cca = new msal.ConfidentialClientApplication(msalConfig);
const tokenRequest = {
  scopes: ["https://outlook.office365.com/.default"]
};

// 发送邮件函数
async function sendMail(to, subject, content) {
  // 获取访问令牌
  const tokenResponse = await cca.acquireTokenByClientCredential(tokenRequest);
  const accessToken = tokenResponse.accessToken;

  // 配置SMTP传输器
  const transporter = nodemailer.createTransport({
    host: "smtp.office365.com",
    port: 587,
    secure: false,
    auth: {
      type: "OAuth2",
      user: "你的发件邮箱地址",
      accessToken: accessToken
    }
  });

  // 发送邮件
  const info = await transporter.sendMail({
    from: "你的发件邮箱地址",
    to: to,
    subject: subject,
    html: content
  });

  return info;
}
注意事项
  • 访问令牌默认有效期为1小时,建议在本地做令牌缓存,到期前重新获取即可,无需每次发邮件都请求新令牌,降低接口调用频率
  • 如果你的私有VLAN需要配置代理才能访问公网,可以分别给msal客户端、nodemailer传输器添加代理配置参数
  • 发件人地址必须是你已经授权了应用访问权限的Office 365邮箱,否则会触发权限错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 00:51:01