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

如何通过编程方式将Outlook邮件保存为EML文件?

通过编程方式将Outlook邮件保存为EML文件的方案

方法1:Outlook JavaScript API(适用于插件开发)

目前Outlook JS API没有直接导出EML的原生方法,但可以通过获取邮件的所有属性,手动构造符合RFC 2822规范的MIME格式内容,再保存为.eml文件:

  • 先获取邮件核心数据:
    // 获取主题
    Office.context.mailbox.item.subject.getAsync((result) => {
      const subject = result.value;
    });
    // 获取发件人
    Office.context.mailbox.item.from.getAsync((result) => {
      const sender = result.value.displayName + " <" + result.value.emailAddress + ">";
    });
    // 获取HTML正文
    Office.context.mailbox.item.body.getAsync("html", (result) => {
      const bodyHtml = result.value;
    });
    // 同理获取收件人、附件、发送时间等信息
    
  • 按照MIME规范组装EML内容:需要包含邮件头(From、To、Subject、Date等)、邮件体(HTML或纯文本),附件需转成Base64编码嵌入到MIME结构中。可以借助成熟的MIME处理JS库来简化这一步的编码工作。

方法2:PowerShell(本地Outlook客户端)

通过Outlook的COM对象可以直接导出EML,操作简单:

# 初始化Outlook对象
$outlook = New-Object -ComObject Outlook.Application
$namespace = $outlook.GetNamespace("MAPI")

# 获取目标邮件(示例:从收件箱筛选指定主题的邮件)
$targetMail = $namespace.GetDefaultFolder(6).Items | Where-Object {$_.Subject -eq "你的邮件主题"}

# 保存为EML文件(4对应olSaveAsEML枚举值)
$targetMail.SaveAs("C:\你要保存的路径\email.eml", 4)

方法3:C# + Exchange Web Services(EWS)

如果是针对Exchange/Office 365邮箱,可以用EWS直接获取邮件的MIME内容并保存:

using Microsoft.Exchange.WebServices.Data;
using System.IO;

var service = new ExchangeService(ExchangeVersion.Exchange2013_SP1);
service.Credentials = new WebCredentials("邮箱账号", "密码");
service.Url = new Uri("https://outlook.office365.com/EWS/Exchange.asmx");

// 通过邮件ID绑定邮件对象
var email = EmailMessage.Bind(service, new ItemId("目标邮件的ID"));
// 加载MIME内容属性
email.Load(new PropertySet(ItemSchema.MimeContent));

// 保存为EML文件
File.WriteAllBytes(@"C:\保存路径\email.eml", email.MimeContent.Content);

内容的提问来源于stack exchange,提问作者R. Mohammad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 09:22:52