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

如何使用Javascript通过Microsoft Graph API从指定非登录账户发送邮件

实现方案

首先明确前提:你需要提前持有目标发信账户的有效授权凭证(SMTP授权码、发信API密钥等),所有身份验证逻辑均基于有效凭证实现,不需要在目标发信账户内预先创建邮件,也和当前系统登录的其他账户无关联。
以下分两种常见JS运行环境给出实现方案:

场景1:Node.js 服务端实现(生产环境唯一推荐方案,无密钥暴露风险)

最常用的实现依赖nodemailer库,身份验证逻辑在创建发信传输器时同步完成,具体步骤:

  • 先进入目标发信邮箱的后台设置,开启SMTP服务,获取专属SMTP授权码(注意不是邮箱的登录密码,绝大多数主流邮箱服务商都会单独生成SMTP授权码)
  • 安装依赖:npm install nodemailer
  • 完整实现代码示例:
const nodemailer = require('nodemailer');

// 创建发信传输器时,直接传入目标账户的验证信息完成身份校验
const mailTransporter = nodemailer.createTransport({
  host: 'smtp.xxx.com', // 替换为对应邮箱服务商的SMTP地址,比如QQ邮箱为smtp.qq.com、Gmail为smtp.gmail.com
  port: 465, // SSL加密端口统一为465,非加密端口为587
  secure: true, // 465端口填true,587端口填false
  auth: {
    user: '指定的发信邮箱完整地址', // 你要用来发信的目标账户地址
    pass: '该邮箱的SMTP专属授权码' // 之前在邮箱后台拿到的授权码,不是登录密码
  }
});

// 可选校验身份是否有效,建议执行
mailTransporter.verify((error, success) => {
  if (error) {
    console.log('目标账户身份验证失败:', error);
    return;
  }
  // 验证通过后直接发信
  mailTransporter.sendMail({
    from: '指定的发信邮箱完整地址',
    to: '收信人邮箱地址',
    subject: '邮件主题',
    text: '邮件正文内容'
  }, (sendErr, info) => {
    if(sendErr) console.log('发信失败:', sendErr);
    else console.log('发信成功:', info.response);
  });
});

如果你的目标发信邮箱要求OAuth2验证(比如Gmail当前默认要求),只需要把auth参数替换为对应的OAuth2凭证(access_token、refresh_token、client_id、client_secret)即可,整体逻辑不变。

场景2:浏览器端实现(仅可用于本地测试,禁止生产环境使用,会泄露授权凭证)

浏览器端直接发信一般调用邮箱服务商提供的公开发信API,身份验证逻辑在请求头中传入目标账户的API密钥完成,示例代码:

fetch('替换为对应邮箱服务商的发信API接口地址', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer 目标发信账户的专属API密钥' // 此处完成身份验证
  },
  body: JSON.stringify({
    from: '指定的发信邮箱完整地址',
    to: '收信人邮箱地址',
    subject: '邮件主题',
    content: '邮件正文内容'
  })
}).then(res => res.json()).then(res => console.log(res))

重要提醒:浏览器端所有请求参数对用户完全可见,直接在前端发信会导致授权凭证泄露,被不法分子盗用发送垃圾邮件,生产环境所有发信逻辑必须放在服务端处理。

注意事项

  • 不同邮箱服务商的SMTP配置、验证规则存在差异,需要根据你使用的邮箱服务商的官方开发文档调整对应参数
  • 如果没有目标发信账户的有效授权凭证,无法完成身份验证和发信操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 13:21:02