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

如何使用EWS/Office-JS等微软技术模拟SMTP向邮件头未列收件人发邮件

微软生态下取证隐写邮件的发送实现方案

针对你的核心需求,以下是对应技术栈的可落地方案:

1. 核心需求的通用实现逻辑

你要的「指定To/Cc邮件头、仅向目标Bcc地址投递、留存原件到已发送文件夹」的逻辑,在所有微软邮件技术栈中都可实现,通用逻辑为:

  • 生成对应收件人的定制隐写邮件正文
  • 手动设置邮件的To、Cc互联网头为你想要展示的地址(不要将这些地址填入实际发送收件人列表)
  • 仅将目标投递地址(也就是你要模拟的Bcc收件人)填入实际发送收件人列表
  • 如果仅需要留存一份统一原件到已发送文件夹,可单独生成一份标准邮件存入已发送,发送所有定制邮件时关闭「保存到已发送」开关,避免生成多份已发送记录

2. 各技术栈的具体实现

EWS(Exchange Web 服务)

EWS是最贴近你原有SMTP逻辑的方案,完全支持自定义所有邮件头、控制投递行为:

  • 构造EmailMessage对象后,通过InternetMessageHeaders属性手动添加To、Cc头,值为你要显示的地址
  • 仅将目标投递地址添加到ToRecipients属性
  • 统一原件可单独构造后调用Save()方法直接存入已发送文件夹,无需发送
  • 定制邮件发送时调用Send()方法(无需保存到已发送),循环执行逻辑和你原来调用多次RCPT TO的逻辑完全等价

Microsoft Graph API

微软目前更推荐使用Graph API替代EWS,兼容性更强,支持Linux端直接调用:

  • 向Graph的发送邮件端点发送POST请求
  • 请求体中message.internetMessageHeaders数组添加To、Cc的自定义头
  • message.toRecipients仅填入你要实际投递的目标地址
  • 统一原件可单独调用接口存入已发送文件夹,定制邮件发送时将saveToSentItems参数设为false即可

Office JS(Outlook 插件)

如果你的需求是在Outlook客户端/网页端插件中实现,可使用Office JS API:

  • 通过item.internetHeaders.setAsync()方法自定义To、Cc头
  • 通过item.to.setAsync()仅设置实际投递地址
  • 统一原件可单独保存到已发送文件夹,定制邮件调用item.sendAsync()发送时关闭保存到已发送的配置即可

3. 现有Linux代码复用方案

不存在「SMTP over EWS」这种标准协议,但是你现有Linux端的核心代码几乎可以全部复用:

  • 原有生成隐写正文、构造邮件头的逻辑完全不需要修改
  • 仅需要替换投递层代码:把原来的SMTP连接、RCPT TO调用逻辑,替换为调用EWS SOAP接口或者Graph API HTTP请求即可
  • EWS和Graph API都没有平台限制,Linux环境可以直接调用,不需要做额外适配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 18:27:04